PageSourceSearch

https://comvi.io/docs

html comvi.io collected 2026-10-02 01:57:13 UTC 25,581 bytes, 60 lines download raw bytes

1<!DOCTYPE html><html lang="en" dir="ltr" data-theme="dark" class="astro-kcdk4grb"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Comvi Documentation | Comvi</title><link rel="canonical" href="https://comvi.io/docs"/><link rel="sitemap" href="/sitemap-index.xml"/>
1<script>document.addEventListener('click', (e) => {
2  const btn = e.target.closest('.expressive-code .copy button');
3  if (!btn) return;
4  const wrap = btn.parentElement;
5  wrap.setAttribute('data-copy-state', 'copied');
6  clearTimeout(wrap.__copyTimer);
7  wrap.__copyTimer = setTimeout(() => {
8    wrap.removeAttribute('data-copy-state');
9  }, 1800);
10});</script>
10<link rel="shortcut icon" href="/favicon.svg" type="image/svg+xml"/><meta name="generator" content="Astro v7.0.6"/><meta name="generator" content="Starlight v0.41.3"/><meta property="og:title" content="Comvi Documentation"/><meta property="og:type" content="article"/><meta property="og:url" content="https://comvi.io/docs"/><meta property="og:locale" content="en"/><meta property="og:description" content="Everything you need to integrate, manage, and automate translations with Comvi."/><meta property="og:site_name" content="Comvi"/><meta name="twitter:card" content="summary_large_image"/><meta name="description" content="Everything you need to integrate, manage, and automate translations with Comvi."/><meta name="twitter:site" content="@Comvi_io"/>
10<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://comvi.io/"},{"@type":"ListItem","position":2,"name":"Comvi Documentation","item":"https://comvi.io/docs"}]}</script>
10<link rel="dns-prefetch" href="https://eu.umami.is">
10<script defer src="https://eu.umami.is/script.js" data-website-id="cca59f0c-5396-4c3c-aead-e8d69f1764c2"></script>
10<script type="module">globalThis.process??={},globalThis.process.env??={};var e=[`utm_source`,`utm_medium`,`utm_campaign`,`utm_term`,`utm_content`],t=[`comvi.io`,`www.comvi.io`,`app.comvi.io`],n=e=>{if(!e)return!1;try{let t=new URL(e).hostname;return t!==`comvi.io`&&!t.endsWith(`.comvi.io`)}catch{return!1}};function r(t,r,i){let a=new URLSearchParams(t),o={};for(let t of e){let e=a.get(t);e&&(o[t]=e)}let s=a.get(`utm_landing`),c=a.get(`utm_ref`),l=n(r);return Object.keys(o).length===0&&!s&&!c&&!l?{}:(o.utm_landing=s||i,c?o.utm_ref=c:l&&(o.utm_ref=r),o)}function i(e,n,r=t){if(Object.keys(n).length===0)return 0;let i=0;for(let t of Array.from(e.querySelectorAll(`a[href]`))){let a=t.getAttribute(`href`);if(!a||a.startsWith(`#`)||a.startsWith(`mailto:`)||a.startsWith(`tel:`))continue;let o;try{o=new URL(a,e.baseURI)}catch{continue}if(o.protocol!==`http:`&&o.protocol!==`https:`)continue;let s=a.startsWith(`/`);if(!s&&!r.includes(o.hostname))continue;let c=!1;for(let[e,t]of Object.entries(n))o.searchParams.has(e)||(o.searchParams.set(e,t),c=!0);c&&(t.setAttribute(`href`,s?o.pathname+o.search+o.hash:o.href),i+=1)}return i}var a=()=>{let e=r(location.search,document.referrer,location.pathname);i(document,e)};document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,a):a();</script>
10<script>
11	window.StarlightThemeProvider = (() => {
12		const storedTheme =
13			typeof localStorage !== 'undefined' && localStorage.getItem('starlight-theme');
14		const theme =
15			storedTheme ||
16			(window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark');
17		document.documentElement.dataset.theme = theme === 'light' ? 'light' : 'dark';
18		return {
19			updatePickers(theme = storedTheme || 'auto') {
20				document.querySelectorAll('starlight-theme-select').forEach((picker) => {
21					const select = picker.querySelector('select');
22					if (select) select.value = theme;
23					/** @type {HTMLTemplateElement | null} */
24					const tmpl = document.querySelector(`#theme-icons`);
25					const newIcon = tmpl && tmpl.content.querySelector('.' + theme);
26					if (newIcon) {
27						const oldIcon = picker.querySelector('svg.label-icon');
28						if (oldIcon) {
29							oldIcon.replaceChildren(...newIcon.cloneNode(true).childNodes);
30						}
31					}
32				});
33			},
34		};
35	})();
36</script>
36<template id="theme-icons"><svg aria-hidden="true" class="light astro-c6quodr2" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M5 12a1 1 0 0 0-1-1H3a1 1 0 0 0 0 2h1a1 1 0 0 0 1-1Zm.64 5-.71.71a1 1 0 0 0 0 1.41 1 1 0 0 0 1.41 0l.71-.71A1 1 0 0 0 5.64 17ZM12 5a1 1 0 0 0 1-1V3a1 1 0 0 0-2 0v1a1 1 0 0 0 1 1Zm5.66 2.34a1 1 0 0 0 .7-.29l.71-.71a1 1 0 1 0-1.41-1.41l-.66.71a1 1 0 0 0 0 1.41 1 1 0 0 0 .66.29Zm-12-.29a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.71-.71a1.004 1.004 0 1 0-1.43 1.41l.73.71ZM21 11h-1a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2Zm-2.64 6A1 1 0 0 0 17 18.36l.71.71a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.76-.66ZM12 6.5a5.5 5.5 0 1 0 5.5 5.5A5.51 5.51 0 0 0 12 6.5Zm0 9a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7Zm0 3.5a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-1a1 1 0 0 0-1-1Z"/></svg><svg aria-hidden="true" class="dark astro-c6quodr2" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.64 13a1 1 0 0 0-1.05-.14 8.049 8.049 0 0 1-3.37.73 8.15 8.15 0 0 1-8.14-8.1 8.59 8.59 0 0 1 .25-2A1 1 0 0 0 8 2.36a10.14 10.14 0 1 0 14 11.69 1 1 0 0 0-.36-1.05Zm-9.5 6.69A8.14 8.14 0 0 1 7.08 5.22v.27a10.15 10.15 0 0 0 10.14 10.14 9.784 9.784 0 0 0 2.1-.22 8.11 8.11 0 0 1-7.18 4.32v-.04Z"/></svg><svg aria-hidden="true" class="auto astro-c6quodr2" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg></template><link rel="stylesheet" href="/_astro/print.ehPL0gv-.css" media="print"><link rel="stylesheet" href="/_astro/index.Bw0wXDVn.css"><style>@layer starlight.components{.card-grid:where(.astro-sqcpghk5){grid-template-columns:100%;gap:1rem;display:grid}.card-grid:where(.astro-sqcpghk5)>*{margin-top:0!important}@media (width>=50rem){.card-grid:where(.astro-sqcpghk5){grid-template-columns:1fr 1fr;gap:1.5rem}.stagger:where(.astro-sqcpghk5){--stagger-height:5rem;padding-bottom:var(--stagger-height)}.stagger:where(.astro-sqcpghk5)>:nth-child(2n){transform:translateY(var(--stagger-height))}}.sl-link-card:where(.astro-b5b6kryf){border:1px solid var(--sl-color-gray-5);box-shadow:var(--sl-shadow-sm);border-radius:.5rem;grid-template-columns:1fr auto;gap:.5rem;padding:1rem;display:grid;position:relative}a:where(.astro-b5b6kryf){line-height:var(--sl-line-height-headings);text-decoration:none}a:where(.astro-b5b6kryf):before{content:"";position:absolute;inset:0}.stack:where(.astro-b5b6kryf){flex-direction:column;gap:.5rem}.title:where(.astro-b5b6kryf){color:var(--sl-color-white);font-weight:600;font-size:var(--sl-text-lg)}.description:where(.astro-b5b6kryf){color:var(--sl-color-gray-3);line-height:1.5}.icon:where(.astro-b5b6kryf){color:var(--sl-color-gray-3)}.sl-link-card:where(.astro-b5b6kryf):hover{background:var(--sl-color-gray-7,var(--sl-color-gray-6));border-color:var(--sl-color-gray-2)}.sl-link-card:where(.astro-b5b6kryf):hover .icon:where(.astro-b5b6kryf){color:var(--sl-color-white)}}
37@layer starlight.components{.card:where(.astro-iq3wwn7k){--sl-card-border:var(--sl-color-purple);--sl-card-bg:var(--sl-color-purple-low);border:1px solid var(--sl-color-gray-5);background-color:var(--sl-color-black);flex-direction:column;gap:clamp(.5rem,.125rem + 1vw,1rem);padding:clamp(1rem,.125rem + 3vw,2.5rem)}.card:where(.astro-iq3wwn7k):nth-child(4n+1){--sl-card-border:var(--sl-color-orange);--sl-card-bg:var(--sl-color-orange-low)}.card:where(.astro-iq3wwn7k):nth-child(4n+3){--sl-card-border:var(--sl-color-green);--sl-card-bg:var(--sl-color-green-low)}.card:where(.astro-iq3wwn7k):nth-child(4n+4){--sl-card-border:var(--sl-color-red);--sl-card-bg:var(--sl-color-red-low)}.card:where(.astro-iq3wwn7k):nth-child(4n+5){--sl-card-border:var(--sl-color-blue);--sl-card-bg:var(--sl-color-blue-low)}.title:where(.astro-iq3wwn7k){font-weight:600;font-size:var(--sl-text-h4);color:var(--sl-color-white);line-height:var(--sl-line-height-headings);align-items:center;gap:1rem}.card:where(.astro-iq3wwn7k) .icon:where(.astro-iq3wwn7k){border:1px solid var(--sl-card-border);background-color:var(--sl-card-bg);border-radius:.25rem;flex-shrink:0;padding:.2em}
37.card:where(.astro-iq3wwn7k) .body:where(.astro-iq3wwn7k){font-size:clamp(var(--sl-text-sm), calc(.5rem + 1vw), var(--sl-text-body));margin:0}}
38@layer starlight.components{svg:where(.astro-c6quodr2){color:var(--sl-icon-color);font-size:var(--sl-icon-size,1em);width:1em;height:1em}}
39@layer starlight.components{starlight-tabs:where(.astro-tp4j3jv6){display:block}.tablist-wrapper:where(.astro-tp4j3jv6){overflow-x:auto}:where(.astro-tp4j3jv6)[role=tablist]{border-bottom:2px solid var(--sl-color-gray-5);padding:0;list-style:none;display:flex}.tab:where(.astro-tp4j3jv6){display:flex}.tab:where(.astro-tp4j3jv6)>:where(.astro-tp4j3jv6)[role=tab]{--sl-tab-color-border:var(--sl-color-gray-5);line-height:var(--sl-line-height-headings);box-shadow:0 2px 0 var(--sl-tab-color-border);color:var(--sl-color-gray-3);outline-offset:var(--sl-outline-offset-inside);overflow-wrap:initial;align-items:center;gap:.5rem;padding:.275rem 1.25rem;text-decoration:none;display:flex}.tab:where(.astro-tp4j3jv6) :where(.astro-tp4j3jv6)[role=tab][aria-selected=true]{--sl-tab-color-border:var(--sl-color-text-accent);color:var(--sl-color-white);font-weight:600}.tablist-wrapper:where(.astro-tp4j3jv6)~[role=tabpanel]{margin-top:1rem}}
40@layer starlight.components{.sl-steps{--bullet-size:calc(var(--sl-line-height) * 1rem);--bullet-margin:.375rem;counter-reset:steps-counter var(--sl-steps-start,0);padding-inline-start:0;list-style:none}.sl-steps>li{counter-increment:steps-counter;padding-inline-start:calc(var(--bullet-size) + 1rem);min-height:calc(var(--bullet-size) + var(--bullet-margin));padding-bottom:1px;position:relative}.sl-steps>li+li{margin-top:0}.sl-steps>li:before{content:counter(steps-counter);top:0;width:var(--bullet-size);height:var(--bullet-size);line-height:var(--bullet-size);font-size:var(--sl-text-xs);text-align:center;color:var(--sl-color-white);background-color:var(--sl-color-gray-6);box-shadow:inset 0 0 0 1px var(--sl-color-gray-5);border-radius:99rem;font-weight:600;position:absolute;inset-inline-start:0}.sl-steps>li:after{--guide-width:1px;content:"";top:calc(var(--bullet-size) + var(--bullet-margin));bottom:var(--bullet-margin);width:var(--guide-width);background-color:var(--sl-color-hairline-light);position:absolute;inset-inline-start:calc((var(--bullet-size) - var(--guide-width)) / 2)}}@layer starlight.content{.sl-steps>li>:first-child{--lh:calc(1em * var(--sl-line-height));--shift-y:calc(.5 * (var(--bullet-size) - var(--lh)));transform:translateY(var(--shift-y));margin-bottom:var(--shift-y)}.sl-steps>li>:first-child:where(h1,h2,h3,h4,h5,h6){--lh:calc(1em * var(--sl-line-height-headings))}@supports (--prop:1lh){.sl-steps>li>:first-child{--lh:1lh}}}
41</style>
41<script type="module" src="/_astro/page.DrJhZwLM.js"></script>
41</head><body class="astro-kcdk4grb"><a class="sl-skip-link astro-cjpoey4u" href="#_top">Skip to content</a><div class="page sl-flex astro-au4foarr"><header class="header astro-au4foarr"><div class="header astro-e6rkjeha"><div class="title-wrapper sl-flex astro-e6rkjeha"><a href="/index.html" class="site-title sl-flex astro-3enbvwsp"><img class="light:sl-hidden print:hidden astro-3enbvwsp" alt src="/_astro/logo-dark.Ps-nAMCL.svg" width="183" height="56"><img class="dark:sl-hidden print:block astro-3enbvwsp" alt src="/_astro/logo-light.Ch9m-XbK.svg" width="183" height="56"><span class="sr-only astro-3enbvwsp" translate="no">Comvi</span></a></div><div class="sl-flex print:hidden astro-e6rkjeha"><site-search class="astro-e6rkjeha astro-m4wwcqj4" data-translations="{&quot;placeholder&quot;:&quot;Search&quot;}" data-strip-trailing-slash><button data-open-modal disabled aria-label="Search" aria-keyshortcuts="Control+K" class="astro-m4wwcqj4"><svg aria-hidden="true" class="astro-m4wwcqj4 astro-c6quodr2" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.71 20.29 18 16.61A9 9 0 1 0 16.61 18l3.68 3.68a.999.999 0 0 0 1.42 0 1 1 0 0 0 0-1.39ZM11 18a7 7 0 1 1 0-14 7 7 0 0 1 0 14Z"/></svg><span class="sl-hidden md:sl-block astro-m4wwcqj4" aria-hidden="true">Search</span><kbd class="sl-hidden md:sl-flex astro-m4wwcqj4" style="display: none;"><kbd class="astro-m4wwcqj4">Ctrl</kbd><kbd class="astro-m4wwcqj4">K</kbd></kbd></button><dialog style="padding:0" aria-label="Search" class="astro-m4wwcqj4"><div class="dialog-frame sl-flex astro-m4wwcqj4"><button data-close-modal class="sl-flex md:sl-hidden astro-m4wwcqj4">Cancel</button><div class="search-container astro-m4wwcqj4"><div id="starlight__search" class="astro-m4wwcqj4"></div></div></div></dialog></site-search>
41<script>
42	(() => {
43		const openBtn = document.querySelector('button[data-open-modal]');
44		const shortcut = openBtn?.querySelector('kbd');
45		if (!openBtn || !(shortcut instanceof HTMLElement)) return;
46		const platformKey = shortcut.querySelector('kbd');
47		if (platformKey && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)) {
48			platformKey.textContent = '⌘';
49			openBtn.setAttribute('aria-keyshortcuts', 'Meta+K');
50		}
51		shortcut.style.display = '';
52	})();
53</script>
53<script type="module" src="/_astro/Search.astro_astro_type_script_index_0_lang.DYCdBtg2.js"></script>
53</div><div class="sl-hidden md:sl-flex print:hidden right-group astro-e6rkjeha"><div class="sl-flex social-icons astro-e6rkjeha"><a href="https://github.com/comvi-io" rel="me" class="sl-flex astro-c6qktpkh"><span class="sr-only astro-c6qktpkh">GitHub</span><svg aria-hidden="true" class="astro-c6qktpkh astro-c6quodr2" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M12 .3a12 12 0 0 0-3.8 23.38c.6.12.83-.26.83-.57L9 21.07c-3.34.72-4.04-1.61-4.04-1.61-.55-1.39-1.34-1.76-1.34-1.76-1.08-.74.09-.73.09-.73 1.2.09 1.83 1.24 1.83 1.24 1.08 1.83 2.81 1.3 3.5 1 .1-.78.42-1.31.76-1.61-2.67-.3-5.47-1.33-5.47-5.93 0-1.31.47-2.38 1.24-3.22-.14-.3-.54-1.52.1-3.18 0 0 1-.32 3.3 1.23a11.5 11.5 0 0 1 6 0c2.28-1.55 3.29-1.23 3.29-1.23.64 1.66.24 2.88.12 3.18a4.65 4.65 0 0 1 1.23 3.22c0 4.61-2.8 5.63-5.48 5.92.42.36.81 1.1.81 2.22l-.01 3.29c0 .31.2.69.82.57A12 12 0 0 0 12 .3Z"/></svg></a><a href="https://x.com/Comvi_io" rel="me" class="sl-flex astro-c6qktpkh"><span class="sr-only astro-c6qktpkh">Twitter</span><svg aria-hidden="true" class="astro-c6qktpkh astro-c6quodr2" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M 18.242188 2.25 L 21.554688 2.25 L 14.324219 10.507812 L 22.828125 21.75 L 16.171875 21.75 L 10.953125 14.933594 L 4.992188 21.75 L 1.679688 21.75 L 9.40625 12.914062 L 1.257812 2.25 L 8.082031 2.25 L 12.792969 8.480469 Z M 17.082031 19.773438 L 18.914062 19.773438 L 7.082031 4.125 L 5.113281 4.125 Z M 17.082031 19.773438 "/></svg></a><a href="https://www.linkedin.com/company/comvi-io" rel="me" class="sl-flex astro-c6qktpkh"><span class="sr-only astro-c6qktpkh">LinkedIn</span><svg aria-hidden="true" class="astro-c6qktpkh astro-c6quodr2" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M20.47 2H3.53a1.45 1.45 0 0 0-1.47 1.43v17.14A1.45 1.45 0 0 0 3.53 22h16.94a1.45 1.45 0 0 0 1.47-1.43V3.43A1.45 1.45 0 0 0 20.47 2ZM8.09 18.74h-3v-9h3v9ZM6.59 8.48a1.56 1.56 0 0 1 0-3.12 1.57 1.57 0 1 1 0 3.12Zm12.32 10.26h-3v-4.83c0-1.21-.43-2-1.52-2A1.65 1.65 0 0 0 12.85 13a2 2 0 0 0-.1.73v5h-3v-9h3V11a3 3 0 0 1 2.71-1.5c2 0 3.45 1.29 3.45 4.06v5.18Z"/></svg></a></div><starlight-theme-select><label style="--sl-select-width: 6.25em" class="astro-ufasb3rz"><span class="sr-only astro-ufasb3rz">Select theme</span><svg aria-hidden="true" class="icon label-icon astro-ufasb3rz astro-c6quodr2" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg><select autocomplete="off" class="astro-ufasb3rz"><option value="dark" class="astro-ufasb3rz">Dark</option><option value="light" class="astro-ufasb3rz">Light</option><option value="auto" selected class="astro-ufasb3rz">Auto</option></select><svg aria-hidden="true" class="icon caret astro-ufasb3rz astro-c6quodr2" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg></label></starlight-theme-select>
53<script>
54	StarlightThemeProvider.updatePickers();
55</script>
55<script type="module">globalThis.process??={},globalThis.process.env??={};var e=`starlight-theme`,t=e=>e===`auto`||e===`dark`||e===`light`?e:`auto`,n=()=>t(typeof localStorage<`u`&&localStorage.getItem(e));function r(t){typeof localStorage<`u`&&localStorage.setItem(e,t===`light`||t===`dark`?t:``)}var i=()=>matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`;function a(e){StarlightThemeProvider.updatePickers(e),document.documentElement.dataset.theme=e===`auto`?i():e,r(e)}matchMedia(`(prefers-color-scheme: light)`).addEventListener(`change`,()=>{n()===`auto`&&a(`auto`)});var o=class extends HTMLElement{constructor(){super(),a(n()),this.querySelector(`select`)?.addEventListener(`change`,e=>{e.currentTarget instanceof HTMLSelectElement&&a(t(e.currentTarget.value))})}};customElements.define(`starlight-theme-select`,o);</script>
55<script type="module">globalThis.process??={},globalThis.process.env??={};var e=class extends HTMLElement{constructor(){super();let e=this.querySelector(`select`);e&&(e.addEventListener(`change`,e=>{e.currentTarget instanceof HTMLSelectElement&&(window.location.pathname=e.currentTarget.value)}),window.addEventListener(`pageshow`,t=>{if(!t.persisted)return;let n=e.querySelector(`option[selected]`)?.index;n!==e.selectedIndex&&(e.selectedIndex=n??0)}))}};customElements.define(`starlight-lang-select`,e);</script>
55</div></div></header><div class="main-frame astro-au4foarr">
55<script type="module">globalThis.process??={},globalThis.process.env??={};var e=document.getElementById(`starlight__sidebar`),t=e?.querySelector(`sl-sidebar-state-persist`),n=`sl-sidebar-state`,r=()=>{let r=[],i=t?.dataset.hash||``;try{let e=sessionStorage.getItem(n),t=JSON.parse(e||`{}`);Array.isArray(t.open)&&t.hash===i&&(r=t.open)}catch{}return{hash:i,open:r,scroll:e?.scrollTop||0}},i=e=>{try{sessionStorage.setItem(n,JSON.stringify(e))}catch{}},a=()=>i(r()),o=(e,t)=>{let n=r();n.open[t]=e,i(n)};t?.addEventListener(`click`,e=>{if(!(e.target instanceof Element))return;let t=e.target.closest(`summary`)?.closest(`details`);if(!t)return;let n=t.querySelector(`sl-sidebar-restore`),r=parseInt(n?.dataset.index||``);isNaN(r)||o(!t.open,r)}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&a()}),addEventListener(`pageHide`,a);</script>
55<div class="lg:sl-flex astro-ird2aygt"><div class="main-pane astro-ird2aygt"><main data-pagefind-body class="astro-kcdk4grb" lang="en" dir="ltr"><div class="content-panel astro-yul5zh2f"><div class="sl-container astro-yul5zh2f"><h1 id="_top" class="astro-xsi3dqg2">Comvi Documentation</h1></div></div><div class="content-panel astro-yul5zh2f"><div class="sl-container astro-yul5zh2f"><div class="sl-markdown-content">
56<div class="sl-heading-wrapper level-h2"><h2 id="choose-your-path">Choose your path</h2><a class="sl-anchor-link" href="#choose-your-path"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 1 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 0 0-1.42-1.42m8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 1 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0l3.88-3.89a4.49 4.49 0 0 0 0-6.33M8.83 15.17a1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.92-4.92a1 1 0 1 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42"></path></svg></span><span class="sr-only" data-pagefind-ignore>Section titled “Choose your path”</span></a></div>
57<div class="card-grid astro-sqcpghk5"><div class="sl-link-card astro-b5b6kryf"><span class="sl-flex stack astro-b5b6kryf"><a href="/docs/i18n/quick-start" class="astro-b5b6kryf"><span class="title astro-b5b6kryf">i18n library</span></a><span class="description astro-b5b6kryf">Add translations to your app. Native bindings for Vue, React, Next.js, Nuxt, Svelte, Solid, and vanilla JS.</span></span><svg aria-hidden="true" class="icon rtl:flip astro-b5b6kryf astro-c6quodr2" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.333em;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg></div><div class="sl-link-card astro-b5b6kryf"><span class="sl-flex stack astro-b5b6kryf"><a href="/docs/platform" class="astro-b5b6kryf"><span class="title astro-b5b6kryf">Platform</span></a><span class="description astro-b5b6kryf">Manage projects, languages, translations, team access, and productivity tools.</span></span><svg aria-hidden="true" class="icon rtl:flip astro-b5b6kryf astro-c6quodr2" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.333em;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg></div><div class="sl-link-card astro-b5b6kryf"><span class="sl-flex stack astro-b5b6kryf"><a href="/docs/api" class="astro-b5b6kryf"><span class="title astro-b5b6kryf">REST API</span></a><span class="description astro-b5b6kryf">Author and manage content programmatically. For authoring and tooling, not production reads.</span></span><svg aria-hidden="true" class="icon rtl:flip astro-b5b6kryf astro-c6quodr2" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.333em;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg></div></div>
58<div class="sl-heading-wrapper level-h2"><h2 id="new-to-comvi">New to Comvi?</h2><a class="sl-anchor-link" href="#new-to-comvi"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 1 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 0 0-1.42-1.42m8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 1 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0l3.88-3.89a4.49 4.49 0 0 0 0-6.33M8.83 15.17a1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.92-4.92a1 1 0 1 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42"></path></svg></span><span class="sr-only" data-pagefind-ignore>Section titled “New to Comvi?”</span></a></div>
59<p>Start with <strong><a href="/docs/platform/concepts">Core Concepts</a></strong> to understand how projects, keys, languages, and namespaces work together, then follow the <strong><a href="/docs/i18n/quick-start">Quick Start</a></strong> to integrate in 5 minutes.</p></div><footer class="sl-flex astro-c552z3oj"><div class="meta sl-flex astro-c552z3oj"><p>Last updated: <time datetime="2026-07-13T05:40:37.000Z">Jul 13, 2026</time></p></div><div class="pagination-links print:hidden astro-h2y42f7b" dir="ltr"></div></footer></div></div></main></div></div></div></div>
59<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"50ebd933eb844c348f5872734f77b722","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 59
59
60<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a440184c0a7df13a',t:'MTc5MDkwNjIzMQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
60</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.