{"id":31357,"date":"2026-08-12T12:10:27","date_gmt":"2026-08-12T10:10:27","guid":{"rendered":"https:\/\/botnation.ai\/chatbot-translation\/"},"modified":"2026-08-12T12:26:59","modified_gmt":"2026-08-12T10:26:59","slug":"chatbot-translation","status":"publish","type":"post","link":"https:\/\/botnation.ai\/en\/chatbot-translation\/","title":{"rendered":"Chatbot translation: the right word, the 3 architectures and the real cost"},"content":{"rendered":"<p><script>(function(){var s=document.createElement(\"style\");s.appendChild(document.createTextNode(\".bn-art{ --bn-cream:#faf8f2; --bn-card:#faf6ea; --bn-sand:#ebe3cb; --bn-sand-2:#f3ecd9; --bn-sand-zebra:#f6f0df; --bn-coral:#fe716b; --bn-coral-soft:#fdeeed; --bn-coral-line:#f6c9c6; --bn-coral-txt:#bd3a34; --bn-blue:#3358f0; --bn-blue-soft:#eef1fe; --bn-blue-line:#c9d4fb; --bn-green:#427632; --bn-green-soft:#eef6ea; --bn-ink:#3d351f; --bn-text:#414b56; --bn-muted:#6d6653; --bn-border:#e6dcc2; --bn-r:16px; --bn-r-sm:11px; --bn-sp:22px; --bn-sh:0 1px 2px rgba(61,53,31,.05),0 10px 26px rgba(61,53,31,.07); --bn-sh-sm:0 1px 2px rgba(61,53,31,.05),0 4px 12px rgba(61,53,31,.05); --bn-mono:'IBM Plex Mono','SFMono-Regular',ui-monospace,'Courier New',monospace; color:var(--bn-text); font-size:18px; line-height:1.75; max-width:820px; margin:0 auto; } .bn-art *{box-sizing:border-box} .bn-art p{margin:0 0 1.15em; color:var(--bn-text)} .bn-art h2{ color:var(--bn-ink); font-weight:700; line-height:1.25; font-size:1.72em; margin:2.2em 0 .7em; letter-spacing:-.01em; } .bn-art h3{color:var(--bn-ink); font-weight:700; font-size:1.22em; margin:1.8em 0 .5em} .bn-art a{color:#3f5cd6; text-decoration:underline; text-underline-offset:2px; text-decoration-thickness:1px} .bn-art a:hover{color:var(--bn-coral)} .bn-art strong{color:var(--bn-ink); font-weight:700} .bn-art ul,.bn-art ol{margin:0 0 1.3em; padding-left:1.25em} .bn-art li{margin:.4em 0} .bn-art ul li::marker{color:var(--bn-coral)} .bn-art ol li::marker{color:var(--bn-blue); font-weight:700} .bn-klabel{ display:inline-flex; align-items:center; gap:7px; font-family:var(--bn-mono); font-size:14px; font-weight:600; text-transform:uppercase; letter-spacing:.12em; color:var(--bn-coral); margin:0 0 .2em; } .bn-klabel svg{width:15px;height:15px;flex:none} .bn-tldr{ background:var(--bn-card); border:1px solid var(--bn-border); border-left:4px solid var(--bn-coral); border-radius:var(--bn-r); padding:20px 24px; margin:0 0 30px; box-shadow:var(--bn-sh-sm); } .bn-tldr p{margin:0; color:var(--bn-text)} .bn-tldr p+p{margin-top:.6em} .bn-toc{ background:var(--bn-sand-2); border:1px solid var(--bn-sand); border-radius:var(--bn-r); padding:18px 22px; margin:0 0 34px; } .bn-toc .bn-klabel{color:var(--bn-coral)} .bn-toc ol{margin:.4em 0 0; padding-left:1.2em; columns:2; column-gap:28px} .bn-toc li{margin:.25em 0; break-inside:avoid} .bn-toc a{color:var(--bn-ink); text-decoration:none; font-weight:600; font-size:.96em} .bn-toc a:hover{color:var(--bn-coral); text-decoration:underline} .bn-stats{display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin:28px 0} .bn-stat{ background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:20px 18px; text-align:center; box-shadow:var(--bn-sh-sm); } .bn-stat b{display:block; font-size:2em; line-height:1.1; color:var(--bn-coral); font-weight:800; letter-spacing:-.02em} .bn-stat span{display:block; margin-top:6px; font-size:.86em; color:var(--bn-muted); line-height:1.45} .bn-stat:nth-child(2) b{color:var(--bn-blue)} .bn-stat:nth-child(3) b{color:var(--bn-ink)} .bn-grid{display:grid; grid-template-columns:1fr 1fr; gap:18px; margin:26px 0} .bn-card{ background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:22px; box-shadow:var(--bn-sh-sm); } .bn-card h4{margin:.1em 0 .35em; color:var(--bn-ink); font-size:1.06em; font-weight:700; display:flex; gap:9px; align-items:center} .bn-card h4 svg{width:20px;height:20px;flex:none;color:var(--bn-coral)} .bn-card p{margin:0; font-size:.96em} .bn-ex{ background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:20px 0; box-shadow:var(--bn-sh); position:relative; } .bn-ex-h{display:flex; align-items:center; gap:13px; margin-bottom:14px} .bn-ex-n{ flex:none; width:38px; height:38px; border-radius:11px; background:var(--bn-coral-soft); color:var(--bn-coral); display:flex; align-items:center; justify-content:center; font-weight:800; font-size:1.1em; font-family:var(--bn-mono); } .bn-ex-h h3{margin:0; font-size:1.18em} .bn-ex-tag{font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.1em; color:var(--bn-muted); display:block; margin-top:2px} .bn-ex p{margin:.2em 0 .9em} .bn-ex .bn-ba{display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:14px} .bn-ba div{border-radius:var(--bn-r-sm); padding:13px 15px; font-size:.9em; line-height:1.5} .bn-ba .biz{background:var(--bn-blue-soft); border:1px solid var(--bn-blue-line)} .bn-ba .cli{background:var(--bn-green-soft); border:1px solid #cfe6c4} .bn-ba b{display:block; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.08em; margin-bottom:4px; color:var(--bn-muted)} .bn-tablewrap{overflow-x:auto; margin:26px 0; border-radius:var(--bn-r); border:1px solid var(--bn-border); box-shadow:var(--bn-sh-sm)} .bn-art table{width:100%; border-collapse:collapse; background:var(--bn-card); font-size:.94em; min-width:520px} .bn-art thead th{background:var(--bn-ink); color:#fbf7ec; text-align:left; font-weight:700; padding:13px 16px; font-size:16px} .bn-art tbody td{padding:12px 16px; border-top:1px solid var(--bn-border); color:var(--bn-text); vertical-align:top; font-size:16px} .bn-art tbody tr:nth-child(even){background:var(--bn-sand-zebra)} .bn-art tbody td:first-child{font-weight:700; color:var(--bn-ink)} .bn-cols{display:grid; grid-template-columns:1fr 1fr; gap:18px; margin:26px 0} .bn-col{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:22px; box-shadow:var(--bn-sh-sm)} .bn-col h4{margin:0 0 12px; font-size:1.05em; color:var(--bn-ink); display:flex; align-items:center; gap:9px} .bn-col h4 svg{width:20px;height:20px;flex:none} .bn-col.biz h4 svg{color:var(--bn-blue)} .bn-col.cli h4 svg{color:var(--bn-green)} .bn-col.warn h4 svg{color:var(--bn-coral)} .bn-col ul{margin:0; padding:0; list-style:none} .bn-col li{position:relative; padding-left:26px; margin:.55em 0; font-size:.96em} .bn-col li::before{content:''; position:absolute; left:0; top:.5em; width:13px; height:13px; border-radius:50%; background:var(--bn-coral-soft); border:2px solid var(--bn-coral)} .bn-col.biz li::before{background:var(--bn-blue-soft); border-color:var(--bn-blue)} .bn-col.cli li::before{background:var(--bn-green-soft); border-color:var(--bn-green)} .bn-call{ display:flex; gap:14px; border-radius:var(--bn-r); padding:18px 20px; margin:24px 0; background:var(--bn-card); border:1px solid var(--bn-border); box-shadow:var(--bn-sh-sm); } .bn-call svg{width:22px; height:22px; flex:none; margin-top:1px} .bn-call b{color:var(--bn-ink)} .bn-call p{margin:0; font-size:.95em} .bn-call .bn-klabel{margin-bottom:3px} .bn-tip{border-left:4px solid var(--bn-green)} .bn-tip svg{color:var(--bn-green)} .bn-tip .bn-klabel{color:var(--bn-green)} .bn-warn{border-left:4px solid var(--bn-coral)} .bn-warn svg{color:var(--bn-coral)} .bn-warn .bn-klabel{color:var(--bn-coral)} .bn-info{border-left:4px solid var(--bn-blue)} .bn-info svg{color:var(--bn-blue)} .bn-info .bn-klabel{color:var(--bn-blue)} .bn-def{background:var(--bn-blue-soft); border:1px solid var(--bn-blue-line); border-radius:var(--bn-r); padding:20px 24px; margin:24px 0} .bn-def .bn-klabel{color:var(--bn-blue)} .bn-def p{margin:0} .bn-steps{counter-reset:s; list-style:none; padding:0; margin:24px 0} .bn-steps li{position:relative; padding:0 0 4px 56px; margin:0 0 18px; min-height:40px} .bn-steps li::before{ counter-increment:s; content:counter(s); position:absolute; left:0; top:0; width:40px; height:40px; border-radius:12px; background:var(--bn-coral); color:#fff; font-weight:800; font-family:var(--bn-mono); display:flex; align-items:center; justify-content:center; box-shadow:var(--bn-sh-sm); } .bn-steps li b{display:block; color:var(--bn-ink); margin-bottom:2px} .bn-check{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-check h3{margin:.1em 0 .3em} .bn-check>p{font-size:.95em; color:var(--bn-muted); margin-bottom:14px} .bn-check ul{list-style:none; padding:0; margin:0 0 18px} .bn-check li{margin:0; border-top:1px solid var(--bn-border)} .bn-check li:first-child{border-top:none} .bn-check label{display:flex; align-items:flex-start; gap:13px; padding:12px 2px; cursor:pointer; font-size:.97em; color:var(--bn-text)} .bn-check input{appearance:none; -webkit-appearance:none; flex:none; width:22px; height:22px; margin-top:1px; border:2px solid var(--bn-coral-line); border-radius:7px; background:#fff; cursor:pointer; position:relative; transition:.15s} .bn-check input:checked{background:var(--bn-coral); border-color:var(--bn-coral)} .bn-check input:checked::after{content:''; position:absolute; left:6px; top:2px; width:6px; height:11px; border:solid #fff; border-width:0 2.5px 2.5px 0; transform:rotate(45deg)} .bn-result{border-radius:var(--bn-r-sm); padding:16px 18px; background:var(--bn-coral-soft); border:1px solid var(--bn-coral-line); font-size:.96em} .bn-result b{color:var(--bn-ink)} .bn-result .bn-score{font-family:var(--bn-mono); font-weight:700; color:var(--bn-coral)} .bn-result .bnc-res{display:none; margin-top:10px} .bn-result .bnc-res.on{display:block} .bn-result .bnc-res p{margin:0; color:var(--bn-text)} .bn-faq{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r-sm); margin:0 0 12px; box-shadow:var(--bn-sh-sm); overflow:hidden} .bn-faq summary{cursor:pointer; padding:17px 20px; font-weight:700; color:var(--bn-ink); list-style:none; display:flex; justify-content:space-between; align-items:center; gap:14px; font-size:1.03em} .bn-faq summary::-webkit-details-marker{display:none} .bn-faq summary::after{content:'+'; font-family:var(--bn-mono); font-size:1.5em; color:var(--bn-coral); flex:none; line-height:1; transition:transform .2s} .bn-faq[open] summary::after{transform:rotate(45deg)} .bn-faq .bn-faq-b{padding:0 20px 18px; color:var(--bn-text)} .bn-faq .bn-faq-b p{margin:0} .bn-fig{margin:30px 0; text-align:center} .bn-fig img{width:100%; height:auto; border-radius:var(--bn-r); box-shadow:var(--bn-sh); display:block} .bn-fig figcaption{margin-top:10px; font-size:.85em; color:var(--bn-muted); font-style:italic} .bn-cta{background:var(--bn-ink); border-radius:var(--bn-r); padding:34px 32px; margin:36px 0 12px; text-align:center} .bn-cta h3{color:#fff; margin:0 0 .4em; font-size:1.4em} .bn-cta p{color:#e9e2cf; margin:0 auto 20px; max-width:560px; font-size:1em} .bn-cta-btn{display:inline-block; background:var(--bn-coral); color:#332c19 !important; text-decoration:none !important; font-weight:800; padding:15px 34px; border-radius:999px; font-size:1.02em; box-shadow:0 8px 22px rgba(254,113,107,.35); transition:.15s} .bn-cta-btn:hover{background:#ff8782; color:#fff !important} .bn-quiz{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-quiz .bnq-q{padding:14px 0; border-top:1px solid var(--bn-border)} .bn-quiz .bnq-q:first-of-type{border-top:none; padding-top:4px} .bn-quiz .bnq-qt{font-weight:700; color:var(--bn-ink); margin:0 0 10px; font-size:1.02em} .bn-quiz .bnq-opt{display:flex; align-items:flex-start; gap:12px; padding:9px 12px; margin:6px 0; cursor:pointer; font-size:.96em; color:var(--bn-text); border:1px solid var(--bn-border); border-radius:var(--bn-r-sm); background:#fff; transition:.15s} .bn-quiz .bnq-opt:hover{border-color:var(--bn-coral-line); background:var(--bn-coral-soft)} .bn-quiz .bnq-opt input{appearance:none; -webkit-appearance:none; flex:none; width:20px; height:20px; margin-top:1px; border:2px solid var(--bn-coral-line); border-radius:50%; background:#fff; cursor:pointer; position:relative; transition:.15s} .bn-quiz .bnq-opt input:checked{border-color:var(--bn-coral)} .bn-quiz .bnq-opt input:checked::after{content:''; position:absolute; left:3px; top:3px; width:10px; height:10px; border-radius:50%; background:var(--bn-coral)} .bn-quiz .bnq-opt:has(input:checked){border-color:var(--bn-coral); background:var(--bn-coral-soft)} .bn-quiz .bnq-btn{margin-top:16px; display:inline-block; background:var(--bn-coral); color:#332c19; border:none; font-weight:800; font-size:1em; padding:13px 30px; border-radius:999px; cursor:pointer; box-shadow:0 6px 16px rgba(254,113,107,.28); transition:.15s; font-family:inherit} .bn-quiz .bnq-btn:hover{background:#ff8782} .bn-quiz .bnq-res{display:none; margin-top:18px; padding:18px 20px; border-radius:var(--bn-r-sm); background:var(--bn-blue-soft); border:1px solid var(--bn-blue-line)} .bn-quiz .bnq-res.on{display:block} .bn-quiz #bnq-agent{background:var(--bn-coral-soft); border-color:var(--bn-coral-line)} .bn-quiz #bnq-hybrid{background:var(--bn-green-soft); border-color:#cfe6c4} .bn-quiz .bnq-rt{font-weight:800; color:var(--bn-ink); margin:0 0 6px; font-size:1.08em} .bn-quiz .bnq-res p{margin:0} .bn-spectrum{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-spectrum h3{margin:.1em 0 .3em} .bn-spectrum>p{font-size:.95em; color:var(--bn-muted); margin:0 0 20px} .bn-spec-track{margin:26px 4px 4px} .bn-spec-range{-webkit-appearance:none; appearance:none; width:100%; height:8px; border-radius:999px; background:var(--bn-sand); outline:none; cursor:pointer; margin:0} .bn-spec-range::-webkit-slider-thumb{-webkit-appearance:none; appearance:none; width:26px; height:26px; border-radius:50%; background:var(--bn-coral); border:3px solid #fff; box-shadow:var(--bn-sh-sm); cursor:pointer} .bn-spec-range::-moz-range-thumb{width:26px; height:26px; border-radius:50%; background:var(--bn-coral); border:3px solid #fff; box-shadow:var(--bn-sh-sm); cursor:pointer} .bn-spec-stops{display:flex; justify-content:space-between; margin-top:13px; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.07em; color:var(--bn-muted); gap:8px} .bn-spec-stops span{flex:1; cursor:pointer; transition:.15s; text-align:center} .bn-spec-stops span:first-child{text-align:left} .bn-spec-stops span:last-child{text-align:right} .bn-spec-stops span.on{color:var(--bn-coral); font-weight:700} .bns-pane{display:none; margin-top:22px; border-radius:var(--bn-r-sm); padding:20px 22px; background:var(--bn-sand-2); border:1px solid var(--bn-sand)} .bns-pane.on{display:block} .bns-pane h4{margin:0 0 3px; color:var(--bn-ink); font-size:1.14em} .bns-tag{font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.1em; color:var(--bn-coral); display:block; margin-bottom:11px} .bns-pane>p{margin:0; font-size:.96em; color:var(--bn-text)} .bns-grid{display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:15px} .bns-grid div{background:#fff; border:1px solid var(--bn-border); border-radius:var(--bn-r-sm); padding:11px 14px; font-size:.9em; color:var(--bn-text)} .bns-grid b{display:block; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.07em; color:var(--bn-muted); margin-bottom:3px} .bn-roi{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-roi h3{margin:.1em 0 .3em} .bn-roi>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-roi-fields{display:grid; grid-template-columns:1fr 1fr; gap:20px 28px; margin:18px 0 24px} .bn-roi-field:last-child{grid-column:1\/-1} .bn-roi-field label{display:block; font-size:.9em; color:var(--bn-text); font-weight:600; margin-bottom:11px} .bn-roi-field output{font-family:var(--bn-mono); font-weight:700; color:var(--bn-coral)} .bn-roi-out{display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:4px} .bn-roi-stat{background:var(--bn-sand-2); border:1px solid var(--bn-sand); border-radius:var(--bn-r); padding:20px 16px; text-align:center} .bn-roi-stat b{display:block; font-size:1.85em; line-height:1.05; color:var(--bn-coral); font-weight:800; letter-spacing:-.02em; font-family:var(--bn-mono)} .bn-roi-stat:nth-child(2) b{color:var(--bn-blue)} .bn-roi-stat:nth-child(3) b{color:var(--bn-ink)} .bn-roi-stat span{display:block; margin-top:7px; font-size:.82em; color:var(--bn-muted); line-height:1.4} .bn-roi-note{font-size:16px; color:var(--bn-muted); margin:16px 0 0; font-style:italic} .bn-bot{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:22px 24px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-bot h3{margin:.1em 0 .3em} .bn-bot>p{font-size:.95em; color:var(--bn-muted); margin:0 0 16px} .bn-bot-win{border:1px solid var(--bn-border); border-radius:var(--bn-r-sm); background:#fff; overflow:hidden} .bn-bot-bar{display:flex; align-items:center; gap:11px; padding:12px 16px; background:var(--bn-sand-2); border-bottom:1px solid var(--bn-border)} .bn-bot-ava{flex:none; width:32px; height:32px; border-radius:50%; background:var(--bn-coral-soft); display:flex; align-items:center; justify-content:center} .bn-bot-ava svg{width:19px; height:19px; color:var(--bn-coral)} .bn-bot-id b{display:block; color:var(--bn-ink); font-size:.95em; line-height:1.2} .bn-bot-id span{font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.08em; color:var(--bn-green); display:inline-flex; align-items:center; gap:5px} .bn-bot-id span::before{content:''; width:7px; height:7px; border-radius:50%; background:var(--bn-green)} .bn-bot-log{padding:16px; min-height:130px; max-height:320px; overflow-y:auto; display:flex; flex-direction:column; gap:10px} .bn-bot-msg{max-width:82%; padding:10px 14px; border-radius:15px; font-size:.95em; line-height:1.5} .bn-bot-msg.bot{align-self:flex-start; background:var(--bn-sand-2); color:var(--bn-text); border-bottom-left-radius:4px} .bn-bot-msg.user{align-self:flex-end; background:var(--bn-coral); color:#332c19; border-bottom-right-radius:4px} .bn-bot-quick{display:flex; flex-wrap:wrap; gap:8px; padding:2px 16px 14px} .bn-art .bn-bot-qbtn{font-family:inherit; font-size:16px; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-coral-line); border-radius:999px; padding:7px 14px; cursor:pointer; transition:.15s} .bn-art .bn-bot-qbtn:hover{background:var(--bn-coral-soft); border-color:var(--bn-coral)} .bn-bot-form{display:flex; gap:8px; padding:12px 16px; border-top:1px solid var(--bn-border); background:var(--bn-sand-2)} .bn-bot-input{flex:1; min-width:0; font-family:inherit; font-size:.95em; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-border); border-radius:999px; padding:10px 16px; outline:none} .bn-bot-input:focus{border-color:var(--bn-coral)} .bn-art .bn-bot-send{flex:none; font-family:inherit; font-weight:700; font-size:16px; color:#fff; background:var(--bn-coral); border:none; border-radius:999px; padding:10px 20px; cursor:pointer; transition:.15s} .bn-art .bn-bot-send:hover{background:#ff8782} .bn-art .bn-bot-note{font-size:16px; color:var(--bn-muted); margin:14px 0 0; font-style:italic} .bbot-kb,.bbot-fallback{display:none} .bn-shot{margin:16px 0 2px; border:1px solid var(--bn-border); border-radius:var(--bn-r-sm); background:#fff; overflow:hidden} .bn-shot-bar{display:flex; align-items:center; gap:8px; padding:9px 13px; background:var(--bn-sand-2); border-bottom:1px solid var(--bn-border)} .bn-shot-dot{width:8px;height:8px;border-radius:50%;background:var(--bn-green);flex:none} .bn-shot-bar b{color:var(--bn-ink); font-size:.9em} .bn-shot-bar span{margin-left:auto; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.06em; color:var(--bn-muted)} .bn-shot-log{padding:13px 14px; display:flex; flex-direction:column; gap:8px} .bn-shot .bn-bot-msg{max-width:86%; font-size:.9em} .bn-shot-quick{display:flex; flex-wrap:wrap; gap:6px; margin-top:2px} .bn-shot-quick span{font-size:14px; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-coral-line); border-radius:999px; padding:4px 11px} .bn-exlink{margin:13px 0 0; font-weight:700; display:flex; align-items:center; gap:6px} .bn-exlink svg{width:16px;height:16px;flex:none;color:var(--bn-coral)} .bn-lb{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-lb h3{margin:.1em 0 .3em} .bn-lb>p{font-size:.95em; color:var(--bn-muted); margin:0 0 16px} .bn-lb-ctrl{display:flex; flex-wrap:wrap; gap:11px; align-items:center; margin:0 0 16px} .bn-lb-ctrl br{display:none} .bn-lb-search{flex:1; min-width:200px; font-family:inherit; font-size:16px; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-border); border-radius:999px; padding:11px 18px; outline:none} .bn-lb-search:focus{border-color:var(--bn-coral)} .bn-lb-filters{display:flex; flex-wrap:wrap; gap:8px} .bn-art .bn-lb-fbtn{font-family:inherit; font-size:16px; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-coral-line); border-radius:999px; padding:9px 16px; cursor:pointer; transition:.15s} .bn-art .bn-lb-fbtn:hover{background:var(--bn-coral-soft)} .bn-art .bn-lb-fbtn.on{background:var(--bn-coral); color:#fff; border-color:var(--bn-coral)} .bn-lb .bn-lb-th{cursor:pointer; user-select:none; white-space:nowrap} .bn-lb .bn-lb-th:hover{color:#fbf7ec; opacity:.85} .bn-lb-rank{font-family:var(--bn-mono); font-weight:700; color:var(--bn-coral); text-align:center} .bn-lb-score{font-family:var(--bn-mono); font-weight:700; color:var(--bn-ink); text-align:right; white-space:nowrap} .lb-empty{padding:16px; text-align:center; color:var(--bn-muted); font-size:.95em} .bn-lb-foot{font-size:16px; color:var(--bn-muted); margin:14px 0 0; font-style:italic} @media(max-width:680px){ .bn-art{font-size:17px} .bn-stats,.bn-grid,.bn-cols,.bn-ex .bn-ba,.bns-grid,.bn-roi-fields,.bn-roi-out{grid-template-columns:1fr} .bn-roi-field:last-child{grid-column:auto} .bn-toc ol{columns:1} .bn-art h2{font-size:1.5em} .bn-bot-msg{max-width:90%} } .bn-art sup,.bn-art sub{font-size:14px;line-height:0} .bn-klabel.hc{color:var(--bn-coral-txt)} .bn-cdc{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-cdc h3{margin:.1em 0 .3em} .bn-cdc>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-cdc br{display:none} .bn-cdc p:empty{display:none; margin:0} .cdc-q{padding:15px 0; border-top:1px solid var(--bn-border)} .cdc-q:first-of-type{border-top:none; padding-top:2px} .bn-art .cdc-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .cdc-chips{display:flex; flex-wrap:wrap; gap:8px} .cdc-chips p:not([class]){display:contents} .bn-art .cdc-chip{display:inline-flex; align-items:center; font-size:16px; line-height:1.35; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-coral-line); border-radius:999px; padding:9px 16px; cursor:pointer; transition:.15s} .bn-art .cdc-chip:hover{background:var(--bn-coral-soft)} .bn-art .cdc-chip:has(input:checked){background:var(--bn-coral); color:#332c19; border-color:var(--bn-coral); font-weight:700} .cdc-chip input{position:absolute; opacity:0; width:1px; height:1px; pointer-events:none} .cdc-out{margin:22px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .cdc-line{padding:14px 0; border-top:1px solid var(--bn-sand)} .cdc-line:first-of-type{border-top:none; padding-top:2px} .cdc-line p:not([class]){margin:0} .bn-art .cdc-line b{display:block; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.08em; color:var(--bn-coral-txt); margin-bottom:6px} .bn-art .cdc-line span{display:block; font-size:16px; line-height:1.62; color:var(--bn-text)} .bn-art .cdc-copy{margin-top:18px; display:inline-block; background:var(--bn-coral); color:#332c19; border:none; font-family:inherit; font-weight:800; font-size:16px; padding:13px 28px; border-radius:999px; cursor:pointer; box-shadow:0 6px 16px rgba(254,113,107,.28); transition:.15s} .bn-art .cdc-copy:hover{background:#ff8782} .bn-art .cdc-note{font-size:16px; color:var(--bn-muted); margin:12px 0 0; font-style:italic; min-height:1.5em} @media(max-width:680px){ .cdc-chips{flex-direction:column; align-items:stretch} .bn-art .cdc-chip{justify-content:flex-start} } .bn-niv{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-niv h3{margin:.1em 0 .3em} .bn-niv>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-niv br{display:none} .bn-niv p:empty{display:none; margin:0} .niv-q{padding:15px 0; border-top:1px solid var(--bn-border)} .niv-q:first-of-type{border-top:none; padding-top:2px} .bn-art .niv-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .niv-out{margin:24px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .bn-art .niv-score{display:flex; align-items:baseline; gap:10px; margin:0 0 13px} .bn-art .niv-score b{font-family:var(--bn-mono); font-size:2.1em; line-height:1; color:var(--bn-coral-txt); font-weight:800; letter-spacing:-.02em} .bn-art .niv-score span{font-size:16px; color:var(--bn-muted)} .niv-gauge{height:10px; border-radius:999px; background:var(--bn-sand); overflow:hidden; margin:0 0 18px} .niv-gauge p:not([class]){display:contents} .niv-gauge i{display:block; height:10px; background:var(--bn-coral); border-radius:999px; width:0} .nivv{display:none; border-radius:var(--bn-r-sm); padding:17px 19px; background:#fff; border:1px solid var(--bn-border)} .nivv.on{display:block} .bn-art .nivv b{display:block; font-size:1.08em; color:var(--bn-ink); margin-bottom:5px} .bn-art .nivv p{margin:0; font-size:16px; line-height:1.62} .bn-art .niv-weak{margin:15px 0 0; font-size:16px; color:var(--bn-text)} .bn-art .niv-weak b{font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.08em; color:var(--bn-coral-txt); display:block; margin-bottom:4px} .bn-art blockquote{margin:26px 0; padding:18px 22px; background:var(--bn-card); border:1px solid var(--bn-border); border-left:4px solid var(--bn-blue); border-radius:var(--bn-r); box-shadow:var(--bn-sh-sm)} .bn-art blockquote p{margin:0; font-size:17px; line-height:1.65; color:var(--bn-text)} .bn-chk{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-chk h3{margin:.1em 0 .3em} .bn-chk>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-chk br{display:none} .bn-chk p:empty{display:none; margin:0} .chk-doc{border-radius:var(--bn-r-sm); background:#fff; border:1px solid var(--bn-border); padding:16px 18px; margin:0 0 6px} .bn-art .chk-doc b{display:block; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.08em; color:var(--bn-coral-txt); margin-bottom:6px} .bn-art .chk-doc span{display:block; font-size:16px; line-height:1.62; color:var(--bn-text)} .chk-q{padding:15px 0; border-top:1px solid var(--bn-border)} .bn-art .chk-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .chk-out{margin:22px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .chk-pieces{display:grid; gap:10px; margin:0 0 16px} .chk-piece{border-radius:var(--bn-r-sm); background:#fff; border:1px solid var(--bn-border); padding:12px 14px} .chk-piece.hit{border-color:var(--bn-green); background:var(--bn-green-soft)} .bn-art .chk-piece b{display:block; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.08em; color:var(--bn-muted); margin-bottom:5px} .bn-art .chk-piece.hit b{color:var(--bn-green)} .bn-art .chk-piece span{display:block; font-size:16px; line-height:1.6; color:var(--bn-text)} .bn-art .chk-verdict{border-radius:var(--bn-r-sm); padding:14px 16px; font-size:16px; line-height:1.55; background:var(--bn-green-soft); border:1px solid #cfe6c4; color:var(--bn-text); margin:0 0 12px} .bn-art .chk-verdict.ko{background:var(--bn-coral-soft); border-color:var(--bn-coral-line)} .bn-art .chk-stats{margin:0; font-size:16px; line-height:1.6; color:var(--bn-text)} .bn-art .chk-stats b{font-family:var(--bn-mono); color:var(--bn-coral-txt); font-weight:700} .bn-dev{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-dev h3{margin:.1em 0 .3em} .bn-dev>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-dev br{display:none} .bn-dev p:empty{display:none; margin:0} .dev-q{padding:15px 0; border-top:1px solid var(--bn-border)} .dev-q:first-of-type{border-top:none; padding-top:2px} .bn-art .dev-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .dev-out{margin:24px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .dev-tiles{display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin:0 0 16px} .dev-stat{background:#fff; border:1px solid var(--bn-border); border-radius:var(--bn-r-sm); padding:16px 12px; text-align:center} .bn-art .dev-stat b{display:block; font-family:var(--bn-mono); font-size:1.5em; line-height:1.12; font-weight:800; letter-spacing:-.02em; color:var(--bn-coral-txt)} .bn-art .dev-stat:nth-child(2) b{color:var(--bn-blue)} .bn-art .dev-stat:nth-child(3) b{color:var(--bn-green)} .bn-art .dev-stat:nth-child(4) b{color:var(--bn-ink)} .bn-art .dev-stat span{display:block; margin-top:7px; font-size:14px; color:var(--bn-muted); line-height:1.4} .bn-art .dev-line{margin:0 0 14px; font-size:16px; line-height:1.6; color:var(--bn-text)} .bn-art .dev-line b{font-family:var(--bn-mono); color:var(--bn-coral-txt); font-weight:700} .dvv{display:none; border-radius:var(--bn-r-sm); padding:16px 18px; background:#fff; border:1px solid var(--bn-border)} .dvv.on{display:block} .bn-art .dvv b{display:block; font-size:1.06em; color:var(--bn-ink); margin-bottom:5px} .bn-art .dvv p{margin:0; font-size:16px; line-height:1.62} @media(max-width:680px){ .dev-tiles{grid-template-columns:1fr 1fr} } .bn-fig.doc img{max-width:520px; margin:0 auto} .bn-nlu{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-nlu h3{margin:.1em 0 .3em} .bn-nlu>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-nlu br{display:none} .bn-nlu p:empty{display:none; margin:0} .nlu-q{padding:15px 0; border-top:1px solid var(--bn-border)} .nlu-q:first-of-type{border-top:none; padding-top:2px} .bn-art .nlu-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .bn-art .nlu-in{width:100%; font-family:inherit; font-size:16px; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-border); border-radius:999px; padding:12px 18px; outline:none} .bn-art .nlu-in:focus{border-color:var(--bn-coral)} .nlu-ex{display:flex; flex-wrap:wrap; gap:8px; margin-top:12px} .nlu-ex p:not([class]){display:contents} .bn-art .nlu-exb{font-family:inherit; font-size:16px; line-height:1.35; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-coral-line); border-radius:999px; padding:9px 16px; cursor:pointer; transition:.15s; text-align:left} .bn-art .nlu-exb:hover{background:var(--bn-coral-soft)} .nlu-out{margin:24px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .bn-art .nlu-toks{margin:0 0 14px; font-size:16px; line-height:1.7; color:var(--bn-text)} .bn-art .nlu-toks b{font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.08em; color:var(--bn-coral-txt); display:block; margin-bottom:8px} .bn-art .nlu-tk{display:inline-block; font-family:var(--bn-mono); font-size:14px; background:#fff; border:1px solid var(--bn-border); border-radius:999px; padding:3px 11px; margin:0 6px 6px 0; color:var(--bn-ink)} .nlu-row{display:grid; grid-template-columns:1fr 130px 54px; gap:12px; align-items:center; padding:10px 0; border-top:1px solid var(--bn-sand)} .nlu-row:first-child{border-top:none} .bn-art .nlu-lab{font-size:16px; line-height:1.4; color:var(--bn-ink); font-weight:700} .nlu-bar{height:10px; border-radius:999px; background:var(--bn-sand); overflow:hidden} .nlu-bar i{display:block; height:10px; background:var(--bn-coral); border-radius:999px; width:0} .nlu-row.win .nlu-bar i{background:var(--bn-green)} .bn-art .nlu-sc{font-family:var(--bn-mono); font-size:16px; font-weight:700; color:var(--bn-coral-txt); text-align:right} .nlu-verdict{margin:16px 0 0; border-radius:var(--bn-r-sm); padding:16px 18px; background:#fff; border:1px solid var(--bn-border); border-left:4px solid var(--bn-green)} .nlu-verdict.ko{border-left-color:var(--bn-coral)} .bn-art .nlu-verdict b{display:block; font-size:1.06em; color:var(--bn-ink); margin-bottom:5px} .bn-art .nlu-verdict p{margin:0; font-size:16px; line-height:1.62} .bn-art .nlu-note{font-size:16px; color:var(--bn-muted); margin:14px 0 0; font-style:italic} @media(max-width:680px){ .nlu-row{grid-template-columns:minmax(0,1fr) 64px 48px; gap:9px} .bn-art .nlu-lab{font-size:16px} } @media(max-width:560px){ .nlu-row{grid-template-columns:minmax(0,1fr) auto; gap:7px 10px; padding:12px 0} .bn-art .nlu-lab{grid-column:1; grid-row:1} .bn-art .nlu-sc{grid-column:2; grid-row:1; text-align:right} .nlu-bar{grid-column:1\/3; grid-row:2} } .bn-art code{font-family:var(--bn-mono); font-size:16px; line-height:1.5; background:var(--bn-sand-2); border:1px solid var(--bn-sand); border-radius:6px; padding:1px 7px; color:var(--bn-ink); word-break:break-word} .bn-art pre{background:var(--bn-sand-2); border:1px solid var(--bn-sand); border-radius:var(--bn-r-sm); padding:16px 18px; overflow-x:auto; margin:22px 0} .bn-art pre code{background:none; border:none; padding:0; font-size:16px} .bn-hd{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-hd h3{margin:.1em 0 .3em} .bn-hd>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-hd br{display:none} .bn-hd p:empty{display:none; margin:0} .hd-q{padding:15px 0; border-top:1px solid var(--bn-border)} .hd-q:first-of-type{border-top:none; padding-top:2px} .bn-art .hd-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .hd-out{margin:22px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .hd-head{display:grid; grid-template-columns:minmax(0,auto) minmax(0,1fr); gap:18px; align-items:center} .hd-n{font-family:var(--bn-mono); font-weight:800; line-height:1; color:var(--bn-ink); white-space:nowrap} .bn-art .hd-n span{font-size:34px} .bn-art .hd-n i{font-style:normal; font-size:16px; color:var(--bn-muted); font-weight:600} .hd-track{position:relative; height:14px; border-radius:999px; background:#fff; border:1px solid var(--bn-sand); overflow:hidden} .hd-fill{position:absolute; left:0; top:0; bottom:0; width:0; background:var(--bn-coral); transition:width .18s} .hd-parts{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin-top:16px} .hd-part{background:#fff; border:1px solid var(--bn-sand); border-radius:var(--bn-r-sm); padding:11px 8px; text-align:center} .bn-art .hd-part span{display:block; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.05em; color:var(--bn-muted); line-height:1.3} .bn-art .hd-part b{display:block; font-family:var(--bn-mono); font-size:20px; font-weight:800; color:var(--bn-coral-txt); margin-top:4px} .hdv{display:none; margin-top:18px; border-radius:var(--bn-r-sm); background:#fff; border:1px solid var(--bn-sand); padding:17px 19px} .hdv-1{display:block; border-left:4px solid var(--bn-green)} .hdv-2{border-left:4px solid var(--bn-blue)} .hdv-3{border-left:4px solid var(--bn-coral)} .hdv-4{border-left:4px solid var(--bn-ink)} .bn-art .hdv b{display:block; font-size:18px; line-height:1.4; color:var(--bn-ink); margin-bottom:7px} .bn-art .hdv p{margin:0; font-size:16px; line-height:1.62; color:var(--bn-text)} .bn-art .hd-note{font-size:16px; color:var(--bn-muted); margin:14px 0 0; font-style:italic; line-height:1.55} @media(max-width:680px){ .bn-hd{padding:20px 17px} .hd-out{padding:17px 15px} .hd-head{grid-template-columns:minmax(0,1fr); gap:12px} .hd-parts{grid-template-columns:repeat(2,minmax(0,1fr))} } .bn-tri{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-tri h3{margin:.1em 0 .3em} .bn-tri>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-tri br{display:none} .bn-tri p:empty{display:none; margin:0} .tri-q{padding:15px 0; border-top:1px solid var(--bn-border)} .tri-q:first-of-type{border-top:none; padding-top:2px} .bn-art .tri-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .tri-out{margin:22px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .triv{display:none; border-radius:var(--bn-r-sm); background:#fff; border:1px solid var(--bn-sand); padding:17px 19px} .triv-1{border-left:4px solid var(--bn-ink)} .triv-2{border-left:4px solid var(--bn-coral)} .triv-3{border-left:4px solid var(--bn-blue)} .triv-4{border-left:4px solid var(--bn-muted)} .triv-5{display:block; border-left:4px solid var(--bn-green)} .bn-art .triv em{display:block; font-style:normal; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.06em; color:var(--bn-coral-txt); margin-bottom:7px; line-height:1.4} .bn-art .triv b{display:block; font-size:18px; line-height:1.4; color:var(--bn-ink); margin-bottom:8px} .bn-art .triv p{margin:0 0 .7em; font-size:16px; line-height:1.62; color:var(--bn-text)} .bn-art .triv p:last-child{margin-bottom:0} .tri-lines{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:16px} .tri-line{background:#fff; border:1px solid var(--bn-sand); border-radius:var(--bn-r-sm); padding:13px 15px} .bn-art .tri-line span{display:block; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.05em; color:var(--bn-muted); line-height:1.3; margin-bottom:6px} .bn-art .tri-line b{display:block; font-size:16px; line-height:1.55; color:var(--bn-ink); font-weight:600} .bn-art .tri-note{font-size:16px; color:var(--bn-muted); margin:14px 0 0; font-style:italic; line-height:1.55} .bn-tri .bn-tablewrap{margin-top:22px} .bn-art .tri-load{font-family:var(--bn-mono); font-size:16px; line-height:1.2; color:var(--bn-ink); background:#fff; border:1px solid var(--bn-coral-line); border-radius:999px; padding:8px 15px; cursor:pointer; white-space:nowrap; transition:.15s} .bn-art .tri-load:hover{background:var(--bn-coral-soft)} @media(max-width:680px){ .bn-tri{padding:20px 17px} .tri-out{padding:17px 15px} .tri-lines{grid-template-columns:minmax(0,1fr)} } .bn-art .bn-steps ol{list-style:none;padding:0;margin:0} .bn-art .bn-tip,.bn-art .bn-warn,.bn-art .bn-info{background:var(--bn-card);border:1px solid var(--bn-border);border-radius:var(--bn-r);padding:18px 20px;margin:24px 0;box-shadow:var(--bn-sh-sm)} .bn-art .bn-tip{border-left:4px solid var(--bn-green)} .bn-art .bn-warn{border-left:4px solid var(--bn-coral)} .bn-art .bn-info{border-left:4px solid var(--bn-blue)} .bn-art .bn-tip .bn-klabel,.bn-art .bn-warn .bn-klabel,.bn-art .bn-info .bn-klabel{margin-bottom:6px} .bn-art .bn-tip p,.bn-art .bn-warn p,.bn-art .bn-info p{margin:0} .bn-art .bn-tri table{table-layout:fixed;min-width:640px} .bn-art .bn-tri th:nth-child(1),.bn-art .bn-tri td:nth-child(1){width:22%} .bn-art .bn-tri th:nth-child(2),.bn-art .bn-tri td:nth-child(2){width:14%} .bn-art .bn-tri th:nth-child(3),.bn-art .bn-tri td:nth-child(3){width:14%} .bn-art .bn-tri th:nth-child(4),.bn-art .bn-tri td:nth-child(4){width:13%} .bn-art .bn-tri th:nth-child(5),.bn-art .bn-tri td:nth-child(5){width:22%} .bn-art .bn-tri th:nth-child(6),.bn-art .bn-tri td:nth-child(6){width:15%} .bn-art .bn-tri thead th,.bn-art .bn-tri tbody td{padding:11px 8px} .bn-art .tri-load{padding:4px 10px} .bn-art .bn-cta-in{text-align:center;margin:26px 0} .bn-lng{background:var(--bn-card); border:1px solid var(--bn-border); border-radius:var(--bn-r); padding:24px 26px; margin:28px 0; box-shadow:var(--bn-sh)} .bn-lng h3{margin:.1em 0 .3em} .bn-lng>p{font-size:.95em; color:var(--bn-muted); margin:0 0 18px} .bn-lng br{display:none} .bn-lng p:empty{display:none; margin:0} .lng-q{padding:15px 0; border-top:1px solid var(--bn-border)} .lng-q:first-of-type{border-top:none; padding-top:2px} .bn-art .lng-qt{font-weight:700; color:var(--bn-ink); margin:0 0 11px; font-size:16px; line-height:1.45} .lng-out{margin:22px 0 0; border-radius:var(--bn-r-sm); background:var(--bn-sand-2); border:1px solid var(--bn-sand); padding:20px 22px} .lng-lines{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px} .lng-line{background:#fff; border:1px solid var(--bn-sand); border-radius:var(--bn-r-sm); padding:13px 15px} .bn-art .lng-line b{display:block; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.05em; color:var(--bn-muted); line-height:1.3; margin-bottom:6px} .bn-art .lng-line span{display:block; font-size:16px; line-height:1.55; color:var(--bn-ink); font-weight:600} .lngv{display:none; margin-top:16px; border-radius:var(--bn-r-sm); background:#fff; border:1px solid var(--bn-sand); padding:17px 19px} .lngv-1{display:block; border-left:4px solid var(--bn-blue)} .lngv-2{border-left:4px solid var(--bn-coral)} .lngv-3{border-left:4px solid var(--bn-green)} .lngv-4{border-left:4px solid var(--bn-ink)} .bn-art .lngv em{display:block; font-style:normal; font-family:var(--bn-mono); font-size:14px; text-transform:uppercase; letter-spacing:.06em; color:var(--bn-coral-txt); margin-bottom:7px; line-height:1.4} .bn-art .lngv b{display:block; font-size:18px; line-height:1.4; color:var(--bn-ink); margin-bottom:8px} .bn-art .lngv p{margin:0 0 .7em; font-size:16px; line-height:1.62; color:var(--bn-text)} .bn-art .lngv p:last-child{margin-bottom:0} .bn-art .lng-note{font-size:16px; color:var(--bn-muted); margin:14px 0 0; font-style:italic; line-height:1.55} .bn-lng .bn-tablewrap{margin-top:22px} .bn-art .bn-lng table{table-layout:fixed; min-width:620px} .bn-art .bn-lng th:nth-child(1),.bn-art .bn-lng td:nth-child(1){width:26%} .bn-art .bn-lng th:nth-child(2),.bn-art .bn-lng td:nth-child(2){width:28%} .bn-art .bn-lng th:nth-child(3),.bn-art .bn-lng td:nth-child(3){width:32%} .bn-art .bn-lng th:nth-child(4),.bn-art .bn-lng td:nth-child(4){width:14%} .bn-art .bn-lng thead th,.bn-art .bn-lng tbody td{padding:11px 10px} @media(max-width:680px){ .bn-lng{padding:20px 17px} .lng-out{padding:17px 15px} .lng-lines{grid-template-columns:minmax(0,1fr)} }\"));document.head.appendChild(s);})();<\/script><\/p>\n<div class=\"bn-art\">\n<div class=\"bn-tldr\">\n<span class=\"bn-klabel\">In short<\/span>\n<ul>\n<li><strong>Chatbot translation<\/strong> hides two different questions: which words to use when your bot speaks another language, and how to make it answer in several languages at all. This article answers both.<\/li>\n<li>On the wording side, the <strong>Journal officiel<\/strong> settled the matter in 2018: the recommended French word for chatbot is <strong>dialogueur<\/strong>. Paris advises against \u00ab agent conversationnel \u00bb, which Quebec puts first in its own list.<\/li>\n<li>On the technical side there are <strong>three architectures<\/strong>, and one question decides between them: translate once and for all, translate every single message, or let the model answer directly in the language it received.<\/li>\n<li>The machine translation bill is trivial on one side and proportional to traffic on the other. Across the <strong>162 combinations<\/strong> of the tool below, translating an entire scripted bot always costs less than <strong>26 days<\/strong> of conversations translated on the fly.<\/li>\n<li>Of the 19 organic results recorded on 12 August 2026 for this query in French, <strong>none<\/strong> quotes a price per million characters and <strong>none<\/strong> uses the word \u00ab processor \u00bb in the data protection sense.<\/li>\n<\/ul>\n<\/div>\n<p>A visitor opens your chatbot and writes in Spanish. What happens? In most projects the honest answer is: nobody planned for it. The script exists in one language, the understanding engine was trained on phrasings in that language, and the Spanish message lands in the fallback reply.<\/p>\n<p>Making a chatbot multilingual is not a checkbox. It is an architecture decision that commits your budget, your maintenance workload and, more recently, your compliance. The pages competing on this topic almost all sell a translation service without ever saying what the thing costs or where it breaks. This article takes the opposite route: the published prices of the translation engines, the three possible designs, what stays untranslated when you think everything is done, and a tool to place your own case.<\/p>\n<p class=\"bn-cta-in\"><a class=\"bn-cta-btn\" href=\"https:\/\/start.botnation.ai\/login\">Create your chatbot for free<\/a><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_86 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Summary<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #3d351f;color:#3d351f\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #3d351f;color:#3d351f\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/botnation.ai\/en\/chatbot-translation\/#Chatbot_translation_two_questions_in_the_same_query\" >Chatbot translation: two questions in the same query<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/botnation.ai\/en\/chatbot-translation\/#If_your_bot_speaks_French_the_Journal_officiel_settled_the_word_in_2018\" >If your bot speaks French, the Journal officiel settled the word in 2018<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/botnation.ai\/en\/chatbot-translation\/#The_three_ways_to_make_a_chatbot_multilingual\" >The three ways to make a chatbot multilingual<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/botnation.ai\/en\/chatbot-translation\/#Fixed_translation\" >Fixed translation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/botnation.ai\/en\/chatbot-translation\/#On_the_fly_translation\" >On the fly translation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/botnation.ai\/en\/chatbot-translation\/#Direct_generation\" >Direct generation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/botnation.ai\/en\/chatbot-translation\/#What_a_no-code_platform_actually_does\" >What a no-code platform actually does<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/botnation.ai\/en\/chatbot-translation\/#What_each_route_really_costs\" >What each route really costs<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/botnation.ai\/en\/chatbot-translation\/#The_calculation_nobody_publishes\" >The calculation nobody publishes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/botnation.ai\/en\/chatbot-translation\/#Fixed_on_the_fly_or_generated_where_does_your_project_sit\" >Fixed, on the fly or generated: where does your project sit?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/botnation.ai\/en\/chatbot-translation\/#What_stays_in_the_source_language_when_you_think_everything_is_translated\" >What stays in the source language when you think everything is translated<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/botnation.ai\/en\/chatbot-translation\/#Where_the_messages_go_when_an_API_translates_them\" >Where the messages go when an API translates them<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/botnation.ai\/en\/chatbot-translation\/#The_method_in_order\" >The method, in order<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/botnation.ai\/en\/chatbot-translation\/#Frequently_asked_questions\" >Frequently asked questions<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/botnation.ai\/en\/chatbot-translation\/#What_to_take_away\" >What to take away<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/botnation.ai\/en\/chatbot-translation\/#Open_your_chatbot_to_one_more_language\" >Open your chatbot to one more language<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 id=\"deux-questions\"><span class=\"ez-toc-section\" id=\"Chatbot_translation_two_questions_in_the_same_query\"><\/span>Chatbot translation: two questions in the same query<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The results page for this topic is split in two, and that is what makes it interesting. On 12 August 2026, on Google France, the <strong>19 organic results<\/strong> recorded fall into three families, counted one by one.<\/p>\n<p><strong>Five<\/strong> are <strong>terminology resources<\/strong>: Reverso Context, PONS, the Larousse dictionary, the Vitrine linguistique of the Office qu\u00e9b\u00e9cois de la langue fran\u00e7aise, and a blog devoted to the French language. They answer a wording question: what is the French word for <em>chatbot<\/em>?<\/p>\n<p><strong>Eight<\/strong> are about <strong>translating a chatbot<\/strong>: Translated, BigTranslation twice, Smartling, Traduc, Botpress, a comparison published by SAWL, and a teaching handout in PDF form. They answer a project question.<\/p>\n<p>The <strong>remaining six<\/strong> answer neither: they are general definitions of the word chatbot, or pages for AI tools, pulled up by the presence of the word alone.<\/p>\n<div class=\"bn-tablewrap\">\n<table>\n<thead>\n<tr>\n<th>What the reader wants<\/th>\n<th>What the results page serves<\/th>\n<th>What is missing<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>The right word in the target language<\/td>\n<td>Six dictionary entries, two of them bilingual<\/td>\n<td>The official term and its source, which 18 pages out of 19 never cite<\/td>\n<\/tr>\n<tr>\n<td>Making a bot speak several languages<\/td>\n<td>Service pages and one technical tutorial<\/td>\n<td>A price, a comparison of architectures, a limit<\/td>\n<\/tr>\n<tr>\n<td>Knowing what it costs<\/td>\n<td>Nothing<\/td>\n<td>Not one of the 19 pages prices a million translated characters<\/td>\n<\/tr>\n<tr>\n<td>Knowing where the messages go<\/td>\n<td>Almost nothing<\/td>\n<td>Not one of the 19 pages uses the word \u00ab processor \u00bb<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>The count was made page by page, after downloading the 19 results, which correspond to 18 distinct addresses, one of them appearing twice on the same results page. Four pages use the word <em>dialogueur<\/em>, only one points to the body that recommended it, only one names a translation engine, and none gives a rate. That is the space left open.<\/p>\n<h2 id=\"mot-francais\"><span class=\"ez-toc-section\" id=\"If_your_bot_speaks_French_the_Journal_officiel_settled_the_word_in_2018\"><\/span>If your bot speaks French, the Journal officiel settled the word in 2018<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The question looks trivial. It stops being trivial the moment you write a public tender document, a notice aimed at a French administration, or simply the labels inside your own bot. It deserves better than an approximate synonym, and there is an official, dated answer that almost nobody quotes. For the rest of the vocabulary, our <a href=\"https:\/\/botnation.ai\/en\/chatbot-definition-examples\/\">chatbot definition with examples<\/a> covers the ground in detail.<\/p>\n<div class=\"bn-def\">\n<span class=\"bn-klabel\">Official definition<\/span>\n<p><strong>Dialogueur<\/strong>, masculine noun: \u00ab Logiciel sp\u00e9cialis\u00e9 dans le dialogue en langage naturel avec un humain, qui est capable notamment de r\u00e9pondre \u00e0 des questions ou de d\u00e9clencher l\u2019ex\u00e9cution de t\u00e2ches. \u00bb In English: software specialised in natural language dialogue with a human, able in particular to answer questions or to trigger the execution of tasks. Synonym: <em>agent de dialogue<\/em>. Foreign equivalents: <em>chatbot<\/em>, <em>conversational agent<\/em>. List \u00ab Vocabulaire de l\u2019intelligence artificielle \u00bb, published in the <em>Journal officiel<\/em> n<sup>o<\/sup> 0285 of 9 December 2018.<\/p>\n<\/div>\n<p>The official record carries three notes. The first two describe the uses, from sales to home automation. The third is the one nobody quotes: \u00ab On trouve aussi l\u2019expression \u201cagent conversationnel\u201d, qui est d\u00e9conseill\u00e9e. \u00bb The expression \u00ab agent conversationnel \u00bb is, in other words, advised against.<\/p>\n<figure class=\"bn-fig\"><img fetchpriority=\"high\" src=\"https:\/\/botnation.ai\/wp-content\/uploads\/2026\/08\/bn-ct-shot-franceterme.jpg\" alt=\"Official record of the term dialogueur on FranceTerme, with its definition and its publication in the Journal officiel of 9 December 2018\" decoding=\"async\" width=\"1500\" height=\"1000\"><figcaption>The FranceTerme record for \u00ab dialogueur \u00bb, consulted on 12 August 2026. This source is published in French only. It carries the publication date in the Journal officiel and the note that advises against \u00ab agent conversationnel \u00bb.<\/figcaption><\/figure>\n<p>The Office qu\u00e9b\u00e9cois de la langue fran\u00e7aise, whose record sits at the 5<sup>th<\/sup> organic position on that same results page, does the exact opposite. Its record, updated in 2025, puts <strong>agent conversationnel<\/strong> first among its preferred terms, ahead of <em>agent de dialogue<\/em> and <em>dialogueur<\/em>. It reserves <em>robot conversationnel<\/em> for simple agents, and it advises against\u2026 <em>chatbot<\/em> itself: \u00ab L\u2019emprunt int\u00e9gral chatbot, en usage en fran\u00e7ais depuis la fin des ann\u00e9es 1990, est d\u00e9conseill\u00e9 puisqu\u2019il n\u2019est pas l\u00e9gitim\u00e9 dans l\u2019usage. \u00bb The borrowing, in use in French since the late 1990s, is advised against because it is not established in usage.<\/p>\n<div class=\"bn-tablewrap\">\n<table>\n<thead>\n<tr>\n<th>Source<\/th>\n<th>Term put forward<\/th>\n<th>Term advised against<\/th>\n<th>Date<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Journal officiel (France)<\/td>\n<td>dialogueur, agent de dialogue<\/td>\n<td>agent conversationnel<\/td>\n<td>9 December 2018<\/td>\n<\/tr>\n<tr>\n<td>Office qu\u00e9b\u00e9cois de la langue fran\u00e7aise<\/td>\n<td>agent conversationnel, agent de dialogue, dialogueur<\/td>\n<td>chatbot<\/td>\n<td>record updated in 2025<\/td>\n<\/tr>\n<tr>\n<td>Larousse<\/td>\n<td>chatbot as the main entry, dialogueur as the official recommendation<\/td>\n<td>none<\/td>\n<td>online edition consulted on 12 August 2026<\/td>\n<\/tr>\n<tr>\n<td>Reverso Context<\/td>\n<td>agent conversationnel, robot conversationnel, assistant virtuel, agent de dialogue, dialogueur<\/td>\n<td>none<\/td>\n<td>consulted on 12 August 2026<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"bn-call bn-warn\">\n<span class=\"bn-klabel\">Watch out<\/span>\n<p>The two French-speaking authorities contradict each other on the same word: the term France advises against is the one Quebec puts first. In a document aimed at a French administration, write <strong>dialogueur<\/strong> or <strong>agent de dialogue<\/strong>. In a text aimed at Canada, <strong>agent conversationnel<\/strong> reads perfectly well. And in marketing copy, <em>chatbot<\/em> remains the word your readers actually type into Google. The same arbitration exists in every language you deploy, and nobody but you will make it.<\/p>\n<\/div>\n<h2 id=\"trois-architectures\"><span class=\"ez-toc-section\" id=\"The_three_ways_to_make_a_chatbot_multilingual\"><\/span>The three ways to make a chatbot multilingual<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Now the real subject. There are only three designs, and they have nothing in common in terms of budget or maintenance. The choice depends as much on the <a href=\"https:\/\/botnation.ai\/en\/type-of-chatbot\/\">type of chatbot<\/a> you run as on your traffic volume.<\/p>\n<div class=\"bn-ex\">\n<div class=\"bn-ex-h\">\n<div class=\"bn-ex-n\">1<\/div>\n<div>\n<h3><span class=\"ez-toc-section\" id=\"Fixed_translation\"><\/span>Fixed translation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span class=\"bn-ex-tag\">One version of the script per language<\/span><\/p><\/div>\n<\/div>\n<p>You duplicate your conversation tree, you translate every message once, and the bot switches to the right version based on the detected language. Nothing is translated during the conversation: everything is written in advance, proofread, approved.<\/p>\n<div class=\"bn-ba\">\n<div class=\"biz\"><b>What you gain<\/b>Control down to the word. No surprises in production, no dependency on a third party service during the conversation, no user message sent anywhere else.<\/div>\n<div class=\"cli\"><b>What it costs<\/b>Maintenance multiplied by the number of languages: every correction to one message has to be applied as many times as there are versions.<\/div>\n<\/div>\n<\/div>\n<div class=\"bn-ex\">\n<div class=\"bn-ex-h\">\n<div class=\"bn-ex-n\">2<\/div>\n<div>\n<h3><span class=\"ez-toc-section\" id=\"On_the_fly_translation\"><\/span>On the fly translation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span class=\"bn-ex-tag\">A translation API sitting in the middle<\/span><\/p><\/div>\n<\/div>\n<p>The bot stays in a single language. At every turn, the user message is translated into the bot language, processed, then the answer is translated back. This is the design Botpress documents in its tutorial, the only page in the top of this query to name an engine, in this case DeepL.<\/p>\n<div class=\"bn-ba\">\n<div class=\"biz\"><b>What you gain<\/b>Immediate coverage of dozens of languages, including the ones you never anticipated, without duplicating a single line of script.<\/div>\n<div class=\"cli\"><b>What it costs<\/b>A bill proportional to traffic, extra latency at every turn, and the content of your conversations leaving your systems.<\/div>\n<\/div>\n<\/div>\n<div class=\"bn-ex\">\n<div class=\"bn-ex-h\">\n<div class=\"bn-ex-n\">3<\/div>\n<div>\n<h3><span class=\"ez-toc-section\" id=\"Direct_generation\"><\/span>Direct generation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span class=\"bn-ex-tag\">The model answers in the language it received<\/span><\/p><\/div>\n<\/div>\n<p>No translation happens at all: a <a href=\"https:\/\/botnation.ai\/en\/generative-ai-chatbot\/\">generative AI chatbot<\/a> reads the question in Polish and writes its answer in Polish, from the same <a href=\"https:\/\/botnation.ai\/en\/rag-chatbot\/\">knowledge base queried through RAG<\/a>. Language becomes a property of the model rather than a layer of the system.<\/p>\n<div class=\"bn-ba\">\n<div class=\"biz\"><b>What you gain<\/b>No script to duplicate, no translation API to pay for, and output that usually reads more naturally than a translation of a translation.<\/div>\n<div class=\"cli\"><b>What it costs<\/b>Control. You never proofread what the model will write, and quality drops on languages poorly represented in its training data.<\/div>\n<\/div>\n<\/div>\n<figure class=\"bn-fig\"><img src=\"https:\/\/botnation.ai\/wp-content\/uploads\/2026\/08\/bn-ct-b2.jpg\" alt=\"Small cream and chrome machine taking in a blank card and producing three copies in different colours\" decoding=\"async\" width=\"1536\" height=\"1024\"><figcaption>On the fly translation amounts to inserting a machine between the user and the bot. It never sleeps, and it bills by the character.<\/figcaption><\/figure>\n<h3><span class=\"ez-toc-section\" id=\"What_a_no-code_platform_actually_does\"><\/span>What a no-code platform actually does<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>On Botnation, multilingual support goes through <strong>contexts<\/strong>: one version of the script per language, with a switch at the entry point. <a href=\"https:\/\/botnation.ai\/en\/support\/create-a-multilingual-chatbot\/\">The help page<\/a> describes it in three lines, and the user can change language mid conversation, through a menu or a plain text request.<\/p>\n<figure class=\"bn-fig\"><img src=\"https:\/\/botnation.ai\/wp-content\/uploads\/2026\/08\/bn-ct-shot-multilingue-en.jpg\" alt=\"Botnation help page explaining how to create a multilingual chatbot with contexts\" decoding=\"async\" width=\"1500\" height=\"620\"><figcaption>The Botnation documentation on multilingual chatbots, consulted on 12 August 2026: routing is done through contexts, with free switching from one language to another.<\/figcaption><\/figure>\n<p>The automatic switch relies on a variable, <code>{{LANGUAGE}}<\/code>, whose <a href=\"https:\/\/botnation.ai\/en\/support\/the-list-of-values-returned-by-the-variable-language\/\">documentation publishes the exact list of possible values<\/a>: <strong>30 codes<\/strong> in ISO 639-1 format, from EN to VI. And one rule that deserves a careful read before you draw your tree: \u00ab Any other language will return the code EN (English). \u00bb<\/p>\n<figure class=\"bn-fig\"><img loading=\"lazy\" src=\"https:\/\/botnation.ai\/wp-content\/uploads\/2026\/08\/bn-ct-shot-language-en.jpg\" alt=\"Botnation documentation listing the language codes returned by the LANGUAGE variable\" decoding=\"async\" width=\"1500\" height=\"780\"><figcaption>The values of the <code>{{LANGUAGE}}<\/code> variable, in ISO 639-1 format. Anything outside that list falls back to EN, so your default branch is the one that has to absorb it.<\/figcaption><\/figure>\n<div class=\"bn-call bn-info\">\n<span class=\"bn-klabel\">Good to know<\/span>\n<p>That fallback rule is good news in disguise. It tells you there are only two cases to handle: the languages you planned for, and a single branch for everything else. If that branch settles for an error message, you lose the visitor. If it offers a language choice or a handover to a human, you keep them.<\/p>\n<\/div>\n<h2 id=\"couts\"><span class=\"ez-toc-section\" id=\"What_each_route_really_costs\"><\/span>What each route really costs<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The prices of translation engines are public, and nobody in the top of this query quotes them. Recorded on 12 August 2026:<\/p>\n<ul>\n<li><strong>Google Cloud Translation<\/strong>, neural translation model: the <strong>first 500,000 characters<\/strong> of each month come free as a 10 dollar credit, then it is <strong>20 dollars per million characters<\/strong>. The specialised model built on a large language model is billed at 10 dollars per million characters of input and 10 dollars per million of output.<\/li>\n<li><strong>DeepL API<\/strong>: the Developer plan is free with a one-time credit of one million characters; the Growth plan shows <strong>\u20ac23.80 per month<\/strong> billed annually, includes 12 million characters per year, then bills <strong>\u20ac22.00 per million<\/strong> extra characters.<\/li>\n<\/ul>\n<p>At the European Central Bank reference rate of 11 August 2026, one euro was worth 1.1540 dollars, which puts Google\u2019s million characters at <strong>\u20ac17.33<\/strong>. Both rates are therefore of the same order of magnitude, which simplifies the decision: it is not settled on unit price.<\/p>\n<div class=\"bn-stats\">\n<div class=\"bn-stat\"><b>\u20ac17.33<\/b><span>per million characters at Google, at the ECB rate of 11 August 2026<\/span><\/div>\n<div class=\"bn-stat\"><b>\u20ac22.00<\/b><span>per million characters at DeepL beyond the Growth plan<\/span><\/div>\n<div class=\"bn-stat\"><b>0\/19<\/b><span>pages in the top of this query quote either of those two figures<\/span><\/div>\n<\/div>\n<p>One billing rule deserves a careful read, because it is counter-intuitive and it is written in plain sight in Google\u2019s documentation: for batch translation, the number of characters billed is the source text <strong>multiplied by the number of target languages<\/strong>. Translating 5,000 characters into two languages bills 10,000. Every language you add is a multiplication, not an addition.<\/p>\n<figure class=\"bn-fig\"><img loading=\"lazy\" src=\"https:\/\/botnation.ai\/wp-content\/uploads\/2026\/08\/bn-ct-shot-google.jpg\" alt=\"Cloud Translation pricing page explaining billing per character and per target language\" decoding=\"async\" width=\"1500\" height=\"1000\"><figcaption>The Cloud Translation pricing page, consulted on 12 August 2026. It is also the page that states that language detection is not billed on top of translation.<\/figcaption><\/figure>\n<figure class=\"bn-fig\"><img loading=\"lazy\" src=\"https:\/\/botnation.ai\/wp-content\/uploads\/2026\/08\/bn-ct-shot-deepl-en.jpg\" alt=\"DeepL API pricing table in English showing 22.00 euros per million extra characters\" decoding=\"async\" width=\"1500\" height=\"1170\"><figcaption>The three DeepL API plans, recorded on 12 August 2026 from France, with the line \u00ab \u20ac22.00 \/ 1,000,000 extra characters \u00bb. The Growth plan advertises \u00ab No data training \u00bb, which is not a detail when the translated messages are your customers\u2019.<\/figcaption><\/figure>\n<h3><span class=\"ez-toc-section\" id=\"The_calculation_nobody_publishes\"><\/span>The calculation nobody publishes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Put those figures end to end and the result is surprising. Translating an entire 100 message script into 3 languages amounts to 66,000 characters, that is to say a little over one euro of machine translation. A single day of foreign traffic translated on the fly costs more than that as soon as the bot passes a few hundred conversations a month.<\/p>\n<p>The tool below runs that calculation on your own case, and shows the crossover point in plain words. Across the <strong>162 combinations<\/strong> it covers, machine translating the whole script is always overtaken by on the fly translation in <strong>less than 26 days<\/strong>, and sometimes in minutes.<\/p>\n<div class=\"bn-lng\" id=\"bn-lng\" data-t1=\"%1 characters to translate once, or \u20ac%2 of machine translation\" data-t2=\"%1 characters per month, or \u20ac%2 per month\" data-t3=\"%1 segments to revisit every year\" data-tj=\"%1 days\" data-th=\"%1 hours\">\n<h3><span class=\"ez-toc-section\" id=\"Fixed_on_the_fly_or_generated_where_does_your_project_sit\"><\/span>Fixed, on the fly or generated: where does your project sit?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Four answers, and the tool prices both paid routes, the yearly maintenance load and the moment the second overtakes the first.<\/p>\n<div class=\"lng-q\">\n<p class=\"lng-qt\">How many messages does your script contain?<\/p>\n<div class=\"cdc-chips\">\n<label class=\"cdc-chip\" for=\"lg-s1\"><input type=\"radio\" id=\"lg-s1\" name=\"lngS\" data-p=\"30\"> About thirty<\/label><br>\n<label class=\"cdc-chip\" for=\"lg-s2\"><input type=\"radio\" id=\"lg-s2\" name=\"lngS\" data-p=\"100\" checked> About a hundred<\/label><br>\n<label class=\"cdc-chip\" for=\"lg-s3\"><input type=\"radio\" id=\"lg-s3\" name=\"lngS\" data-p=\"300\"> Three hundred or more<\/label>\n<\/div>\n<\/div>\n<div class=\"lng-q\">\n<p class=\"lng-qt\">How many languages on top of your own?<\/p>\n<div class=\"cdc-chips\">\n<label class=\"cdc-chip\" for=\"lg-l1\"><input type=\"radio\" id=\"lg-l1\" name=\"lngL\" data-p=\"1\"> One<\/label><br>\n<label class=\"cdc-chip\" for=\"lg-l2\"><input type=\"radio\" id=\"lg-l2\" name=\"lngL\" data-p=\"3\" checked> Three<\/label><br>\n<label class=\"cdc-chip\" for=\"lg-l3\"><input type=\"radio\" id=\"lg-l3\" name=\"lngL\" data-p=\"8\"> Eight<\/label>\n<\/div>\n<\/div>\n<div class=\"lng-q\">\n<p class=\"lng-qt\">How many foreign language conversations per month?<\/p>\n<div class=\"cdc-chips\">\n<label class=\"cdc-chip\" for=\"lg-v1\"><input type=\"radio\" id=\"lg-v1\" name=\"lngV\" data-p=\"300\"> Three hundred<\/label><br>\n<label class=\"cdc-chip\" for=\"lg-v2\"><input type=\"radio\" id=\"lg-v2\" name=\"lngV\" data-p=\"3000\" checked> Three thousand<\/label><br>\n<label class=\"cdc-chip\" for=\"lg-v3\"><input type=\"radio\" id=\"lg-v3\" name=\"lngV\" data-p=\"30000\"> Thirty thousand<\/label>\n<\/div>\n<\/div>\n<div class=\"lng-q\">\n<p class=\"lng-qt\">How often does the content of the bot change?<\/p>\n<div class=\"cdc-chips\">\n<label class=\"cdc-chip\" for=\"lg-u1\"><input type=\"radio\" id=\"lg-u1\" name=\"lngU\" data-p=\"2\"> Twice a year<\/label><br>\n<label class=\"cdc-chip\" for=\"lg-u2\"><input type=\"radio\" id=\"lg-u2\" name=\"lngU\" data-p=\"12\" checked> Every month<\/label><br>\n<label class=\"cdc-chip\" for=\"lg-u3\"><input type=\"radio\" id=\"lg-u3\" name=\"lngU\" data-p=\"52\"> Every week<\/label>\n<\/div>\n<\/div>\n<div class=\"lng-q\">\n<p class=\"lng-qt\">Which translation engine should the pricing use?<\/p>\n<div class=\"cdc-chips\">\n<label class=\"cdc-chip\" for=\"lg-m1\"><input type=\"radio\" id=\"lg-m1\" name=\"lngM\" data-p=\"g\" checked> Google Cloud Translation<\/label><br>\n<label class=\"cdc-chip\" for=\"lg-m2\"><input type=\"radio\" id=\"lg-m2\" name=\"lngM\" data-p=\"d\"> DeepL API<\/label>\n<\/div>\n<\/div>\n<div class=\"lng-out\">\n<div class=\"lng-lines\">\n<div class=\"lng-line\"><b>Fixed translation, once<\/b><span id=\"lng-o1\">66,000 characters to translate once, or \u20ac1.14 of machine translation<\/span><\/div>\n<div class=\"lng-line\"><b>On the fly translation, every month<\/b><span id=\"lng-o2\">6,300,000 characters per month, or \u20ac109.18 per month<\/span><\/div>\n<div class=\"lng-line\"><b>Maintenance load of the fixed version<\/b><span id=\"lng-o3\">3,600 segments to revisit every year<\/span><\/div>\n<div class=\"lng-line\"><b>On the fly overtakes the fixed version in<\/b><span id=\"lng-o4\">7.5 hours<\/span><\/div>\n<\/div>\n<div class=\"lngv lngv-1\" id=\"lgv-1\">\n<em>Rule: more than 2,000 segments a year, and less than \u20ac150 a month on the fly<\/em><br>\n<b>On the fly translation, with a glossary<\/b>\n<p>Your fixed version would demand more than two thousand segment revisions every year, while on the fly translation stays under \u20ac150 a month. Here the human work costs more than the API bill.<\/p>\n<p>Plug in a translation API, and invest the time you save into a <strong>glossary<\/strong>: that is what locks down your product names, your plan names and your industry vocabulary, which engines otherwise translate very diligently.<\/p>\n<\/div>\n<div class=\"lngv lngv-2\" id=\"lgv-2\">\n<em>Rule: more than 2,000 segments a year, and at least \u20ac150 a month on the fly<\/em><br>\n<b>A hybrid design, there is no other way out<\/b>\n<p>Both routes are expensive for you: too many segments to maintain to freeze everything, too much traffic to translate everything on the fly. Neither wins on its own.<\/p>\n<p>Freeze the <strong>core<\/strong>: greeting, main menu, legal notices, handover message, the twenty most requested answers. Leave on the fly translation on the long tail, which carries little volume and many languages.<\/p>\n<\/div>\n<div class=\"lngv lngv-3\" id=\"lgv-3\">\n<em>Rule: at most 2,000 segments a year, and at least \u20ac150 a month on the fly<\/em><br>\n<b>Fixed translation, without hesitation<\/b>\n<p>Your script barely moves and your foreign traffic is significant: the fixed version maintains itself without much effort, while on the fly translation would bill you every month an amount that will never come back down.<\/p>\n<p>This is the most comfortable case. Translate once, have it proofread by someone who knows the business, and keep control over every sentence your customers will read.<\/p>\n<\/div>\n<div class=\"lngv lngv-4\" id=\"lgv-4\">\n<em>Rule: at most 2,000 segments a year, and less than \u20ac150 a month on the fly<\/em><br>\n<b>Fixed translation, because it is the only one that guarantees the exact wording<\/b>\n<p>At this level both routes are cheap: price decides nothing. The only criterion left is editorial control, and only one route gives it to you.<\/p>\n<p>Start fixed on one or two languages, measure what visitors actually write, and open on the fly translation only the day an unplanned language shows up in your statistics.<\/p>\n<\/div>\n<\/div>\n<p class=\"lng-note\">Calculation assumptions, stated so the result is reproducible: 220 characters per script message, 2,100 characters per conversation, public rates from the table below. The two thresholds in the rule, 2,000 segments a year and \u20ac150 a month, are reading benchmarks specific to this article, not an industry standard.<\/p>\n<div class=\"bn-tablewrap\">\n<table>\n<thead>\n<tr>\n<th>Engine<\/th>\n<th>Published rate used<\/th>\n<th>What is included<\/th>\n<th>Recorded on<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr data-k=\"g\" data-eur=\"17.33\">\n<td>Google Cloud Translation<\/td>\n<td>20 dollars per million characters, that is \u20ac17.33<\/td>\n<td>500,000 characters per month free<\/td>\n<td>12 August 2026<\/td>\n<\/tr>\n<tr data-k=\"d\" data-eur=\"22\">\n<td>DeepL API, Growth plan<\/td>\n<td>\u20ac22.00 per million characters<\/td>\n<td>12 million characters a year, for \u20ac23.80 per month<\/td>\n<td>12 August 2026<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2 id=\"reste-en-francais\"><span class=\"ez-toc-section\" id=\"What_stays_in_the_source_language_when_you_think_everything_is_translated\"><\/span>What stays in the source language when you think everything is translated<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>This is the real trap of multilingual projects, and it only shows up in production. A chatbot is not made of answers alone: it is made of everything nobody counts.<\/p>\n<figure class=\"bn-fig\"><img loading=\"lazy\" src=\"https:\/\/botnation.ai\/wp-content\/uploads\/2026\/08\/bn-ct-b1.jpg\" alt=\"Two hands in a cream knit sweater lining up four identical cards in different colours on a light wooden table\" decoding=\"async\" width=\"1536\" height=\"1024\"><figcaption>Every language is a complete copy of the same card. The cost is not the first copy, it is keeping them all identical.<\/figcaption><\/figure>\n<ul>\n<li><strong>Buttons and quick replies.<\/strong> They are short strings with no context, which makes them exactly what machine translation gets wrong most often: \u00ab Next \u00bb, \u00ab Back \u00bb and \u00ab Order \u00bb have no single equivalent.<\/li>\n<li><strong>The fallback message.<\/strong> The one shown when the bot has not understood. It is written once, at the start of the project, and forgotten everywhere else.<\/li>\n<li><strong>Handover messages<\/strong>, and the opening hours notice, which often quotes a time zone the visitor is not in.<\/li>\n<li><strong>Formats.<\/strong> A date written 03\/04 does not read the same way in Paris and in New York, and a price shown as \u00ab 1,200.50 \u00bb becomes \u00ab 1 200,50 \u00bb elsewhere. No translation engine fixes that: your code has to.<\/li>\n<li><strong>Formality.<\/strong> French picks between tu and vous in every single sentence, English never picks. A translation from English therefore chooses for you, and not always the same way from one message to the next.<\/li>\n<li><strong>The understanding engine.<\/strong> This is the most expensive point, and the least visible. It is not part of the displayed text, but it conditions everything else, as the detail of <a href=\"https:\/\/botnation.ai\/en\/how-chatbots-work\/\">how chatbots work<\/a> shows.<\/li>\n<\/ul>\n<div class=\"bn-call bn-warn\">\n<span class=\"bn-klabel\">Common mistake<\/span>\n<p>An engine that recognises an intent from keywords is not translated, it is <strong>rewritten<\/strong>. The phrasings your customers use in German are not the translation of the ones they use in English, the stop words are different, and word collisions do not happen in the same places. Translating the example list of an understanding model produces a model that looks right and recognises poorly. The only method that works is to take the real sentences of real users in each language, which means having opened the bot in that language first.<\/p>\n<\/div>\n<p>The practical consequence is simple: translating a chatbot is not a batch of text to send to a vendor, it is an inventory to draw up first. Count the messages, yes, but also count the buttons, the variables, the notification templates, the interface labels and the training examples. That total is what decides the architecture, as the tool above shows.<\/p>\n<h2 id=\"rgpd\"><span class=\"ez-toc-section\" id=\"Where_the_messages_go_when_an_API_translates_them\"><\/span>Where the messages go when an API translates them<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>On the fly translation has one consequence that none of the 19 top pages names: <strong>the content of your conversations leaves your systems<\/strong>. Whatever the visitor writes, including an order number, an address or the reason for a complaint, is passed to a third party editor to be translated.<\/p>\n<p>Under the European General Data Protection Regulation, that vendor processes personal data on your behalf: it is your <strong>processor<\/strong>, and the relationship has to be governed by a contract, under article 28 of regulation (EU) 2016\/679. This is not a formality: that document is what sets out what the vendor may do with your conversations.<\/p>\n<p>The CNIL, the French data protection authority, published a note on chatbots on 19 February 2021 that recalls that these tools process personal data \u00ab par exemple pour conserver une trace de la conversation, m\u00eame si le service est disponible sans cr\u00e9er de compte ou sans fournir d\u2019informations directement identifiantes \u00bb, that is to say, for example, to keep a record of the conversation, even where the service works without an account and without directly identifying information. It also recalls that a conversation with a chatbot, without human intervention, cannot on its own lead to a decision with significant effects on a person.<\/p>\n<div class=\"bn-call bn-tip\">\n<span class=\"bn-klabel\">Tip<\/span>\n<p>Three questions to ask any translation engine before wiring it into a bot: are the transmitted messages used to train models, how long are they kept, and in which country are they processed? The answers are usually in the pricing table itself. DeepL, for instance, advertises \u00ab No data training \u00bb as a benefit of its Growth plan, which implies it is not the rule everywhere.<\/p>\n<\/div>\n<p>Fixed translation raises none of these questions: the translation happened once, outside production, on text you wrote yourself. It is a compliance argument that is rarely made and yet decisive in regulated sectors, from <a href=\"https:\/\/botnation.ai\/en\/chatbot-insurance\/\">insurance chatbots<\/a> to public services.<\/p>\n<h2 id=\"methode\"><span class=\"ez-toc-section\" id=\"The_method_in_order\"><\/span>The method, in order<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"bn-steps\">\n<ol>\n<li><b>Measure before you translate.<\/b> Open your conversation statistics and look at which languages actually arrive. Plenty of projects translate into five languages a bot whose traffic is overwhelmingly in one. The two sectors where the opposite holds are <a href=\"https:\/\/botnation.ai\/en\/industries\/chatbot-tourism\/\">tourism<\/a> and <a href=\"https:\/\/botnation.ai\/en\/products\/e-commerce\/\">online retail<\/a>.<\/li>\n<li><b>Draw up the full inventory.<\/b> Messages, buttons, quick replies, fallback message, notifications, interface labels, training examples. That number is the only one that matters when choosing an architecture.<\/li>\n<li><b>Settle the architecture with a figure.<\/b> Segments to maintain every year on one side, monthly on the fly translation bill on the other. The tool above gives both.<\/li>\n<li><b>Write the glossary first.<\/b> Product names, plan names, industry vocabulary, terms never to be translated. It serves a human translator just as well as an API, which usually accepts a custom glossary.<\/li>\n<li><b>Handle the unplanned language.<\/b> Decide what the bot does when a language outside your list turns up: offer a choice, fall back to English, or hand over. Do not leave that case to chance.<\/li>\n<li><b>Test in the target language, with real sentences.<\/b> Not yours translated: the ones your users write. That is the only test that exposes an understanding engine that was carried over badly.<\/li>\n<\/ol>\n<\/div>\n<h2 id=\"faq\"><span class=\"ez-toc-section\" id=\"Frequently_asked_questions\"><\/span>Frequently asked questions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<details class=\"bn-faq\">\n<summary>How do you say chatbot in French?<\/summary>\n<div class=\"bn-faq-b\">\n<p>The official term in France is <strong>dialogueur<\/strong>, with <em>agent de dialogue<\/em> as its synonym, published in the <em>Journal officiel<\/em> of 9 December 2018. The expression \u00ab agent conversationnel \u00bb is explicitly advised against there, while it sits first among the preferred terms of the Office qu\u00e9b\u00e9cois de la langue fran\u00e7aise. In everyday and commercial usage, <em>chatbot<\/em> remains by far the most common.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>Can a chatbot translate conversations automatically?<\/summary>\n<div class=\"bn-faq-b\">\n<p>Yes, by inserting a translation API between the user and the bot: the incoming message is translated into the bot language, and the answer is translated back. It is a classic design, billed by the character, and it adds latency at every turn. A chatbot built on a large language model can also answer directly in the language it received, with no translation step at all.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>How much does it cost to machine translate a chatbot?<\/summary>\n<div class=\"bn-faq-b\">\n<p>Translating the text of a script costs a few euros: 100 messages into 3 languages amount to roughly 66,000 characters, that is a little over one euro at the published rates recorded on 12 August 2026. It is on the fly translation that weighs, because it is proportional to traffic: 3,000 foreign conversations a month come to about \u20ac109 with Google and \u20ac139 with DeepL. The real cost of the fixed version is not the translation, it is the human proofreading and the maintenance.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>How many languages can a chatbot handle?<\/summary>\n<div class=\"bn-faq-b\">\n<p>Technically, as many as the translation engine offers, which means dozens. Practically, the limit is editorial rather than technical: every language added multiplies the number of segments to maintain. On Botnation, the <code>{{LANGUAGE}}<\/code> variable distinguishes 30 language codes, any other value falling back to EN.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>Should you translate, or let the AI answer in the user\u2019s language?<\/summary>\n<div class=\"bn-faq-b\">\n<p>It depends on what you accept never to proofread. A script translated in advance guarantees the exact wording, which is essential as soon as a sentence carries a legal commitment. An answer generated in the language received reads more fluently and costs nothing in translation, but you will never see it before it is displayed. Many projects combine the two: a fixed script for messages that commit, generation for the rest.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>Does machine translation raise a GDPR problem?<\/summary>\n<div class=\"bn-faq-b\">\n<p>It does if it is not governed. Sending user messages to a translation engine means entrusting personal data to a third party acting on your behalf: that is a processor under article 28 of regulation (EU) 2016\/679, and the relationship must be covered by a contract. Also check the retention period, the country of processing and any use of the messages to train models. Fixed translation avoids the question entirely.<\/p>\n<\/div>\n<\/details>\n<details class=\"bn-faq\">\n<summary>How do you detect the user\u2019s language?<\/summary>\n<div class=\"bn-faq-b\">\n<p>Two mechanisms coexist, and they do not give the same result. The first reads the language declared by the device or the channel, which is what the <code>{{LANGUAGE}}<\/code> variable does: it is instant and free, but it reflects the browser setting rather than the language the person is writing in. The second analyses the text of the message, usually through the translation API itself. At Google, language detection is not billed on top of translation.<\/p>\n<\/div>\n<\/details>\n<h2 id=\"conclusion\"><span class=\"ez-toc-section\" id=\"What_to_take_away\"><\/span>What to take away<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Chatbot translation is not decided on the price of a million characters, which is negligible on both sides. It is decided on two quantities nobody calculates: the number of segments you will have to maintain every year if you freeze, and the monthly bill you will pay indefinitely if you translate on the fly. Put those two numbers side by side and the architecture picks itself.<\/p>\n<p>The rest is a matter of inventory. A multilingual bot that fails rarely fails on its answers: it fails on a button left in the source language, a forgotten fallback message, a date in the wrong format, or an understanding engine that was translated instead of rewritten.<\/p>\n<div class=\"bn-cta\">\n<h3><span class=\"ez-toc-section\" id=\"Open_your_chatbot_to_one_more_language\"><\/span>Open your chatbot to one more language<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Create an agent for free, duplicate your script into a second language with contexts, and watch what your foreign visitors actually write to it. That record, and only that record, tells you whether to freeze or to translate on the fly.<\/p>\n<p><a class=\"bn-cta-btn\" href=\"https:\/\/botnation.ai\/en\/channels\/\">Explore the deployment channels<\/a><\/p>\n<p><a href=\"https:\/\/botnation.ai\/en\/contact\/\" style=\"color:#f6c9c6\">Or have our chatbot creation experts price your multilingual project<\/a><\/p>\n<\/div>\n<p class=\"bn-src\"><strong>Sources.<\/strong> Commission d\u2019enrichissement de la langue fran\u00e7aise, list \u00ab Vocabulaire de l\u2019intelligence artificielle \u00bb, <em>Journal officiel<\/em> of 9 December 2018, record for <em>dialogueur<\/em> consulted on FranceTerme and on L\u00e9gifrance on 12 August 2026, published in French only; Office qu\u00e9b\u00e9cois de la langue fran\u00e7aise, Vitrine linguistique, record for <em>agent conversationnel<\/em>, updated in 2025; <em>Larousse<\/em>, entry \u00ab chatbot \u00bb, online edition; Google Cloud, Cloud Translation pricing page; DeepL, API pricing table displayed for France; European Central Bank, reference exchange rate of 11 August 2026; CNIL, <em>Chatbots: les conseils de la CNIL pour respecter les droits des personnes<\/em>, 19 February 2021, published in French only; regulation (EU) 2016\/679, article 28; botnation.ai help pages on multilingual chatbots and on the <code>{{LANGUAGE}}<\/code> variable, consulted on 12 August 2026. The record of the nineteen organic results for the query \u00ab chatbot traduction \u00bb was made on 12 August 2026 on Google France, each page then being downloaded and analysed: seventeen fetched directly, one through a rendering engine because of a consent banner, and one in PDF form, from which the text was extracted.<\/p>\n<\/div>\n<p><script>(function(){var r=document.getElementById(\"bn-lng\");if(!r){return;}function val(n){var e=r.querySelector(\"input[name='\"+n+\"']:checked\");return e?e.getAttribute(\"data-p\"):\"\";}function num(n){var v=val(n);return v?parseFloat(v):0;}function tar(){var k=val(\"lngM\");if(!k){return 0;}var row=r.querySelector(\"tr[data-k='\"+k+\"']\");if(!row){return 0;}return parseFloat(row.getAttribute(\"data-eur\"));}function nf(x,d){return x.toLocaleString(\"en-US\",{minimumFractionDigits:d,maximumFractionDigits:d});}function put(id,s){var e=document.getElementById(id);if(e){e.textContent=s;}}function up(){var m=num(\"lngS\"),l=num(\"lngL\"),v=num(\"lngV\"),u=num(\"lngU\"),t=tar();if(t===0){return;}var cf=m*220*l,cv=v*2100;var ef=Math.round(cf*t\/10000)\/100,ev=Math.round(cv*t\/10000)\/100;var sg=m*l*u,j=cf\/cv*30;put(\"lng-o1\",r.getAttribute(\"data-t1\").replace(\"%1\",nf(cf,0)).replace(\"%2\",nf(ef,2)));put(\"lng-o2\",r.getAttribute(\"data-t2\").replace(\"%1\",nf(cv,0)).replace(\"%2\",nf(ev,2)));put(\"lng-o3\",r.getAttribute(\"data-t3\").replace(\"%1\",nf(sg,0)));var s4;if(j>=1){s4=r.getAttribute(\"data-tj\").replace(\"%1\",nf(Math.round(j*10)\/10,1));}else{s4=r.getAttribute(\"data-th\").replace(\"%1\",nf(Math.round(j*240)\/10,1));}put(\"lng-o4\",s4);var lvl=4;if(sg>2000){if(ev>=150){lvl=2;}else{lvl=1;}}else{if(ev>=150){lvl=3;}}var k;for(k=1;5>k;k++){var p=document.getElementById(\"lgv-\"+k);if(p){p.style.display=(k===lvl?\"block\":\"none\");}}}r.addEventListener(\"change\",up);up();})();<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In short Chatbot translation hides two different questions: which words to use when your bot speaks another language, and how to make it answer in several languages at all. This article answers both. On the wording side, the Journal officiel settled the matter in 2018: the recommended French word for chatbot is dialogueur. Paris advises [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":31343,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[362],"tags":[],"class_list":["post-31357","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chatbot-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/posts\/31357","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/comments?post=31357"}],"version-history":[{"count":1,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/posts\/31357\/revisions"}],"predecessor-version":[{"id":31358,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/posts\/31357\/revisions\/31358"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/media\/31343"}],"wp:attachment":[{"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/media?parent=31357"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/categories?post=31357"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/botnation.ai\/en\/wp-json\/wp\/v2\/tags?post=31357"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}