CINXE.COM

Crowdin Apps JS | Developer Portal

<!DOCTYPE html><html lang="en" dir="ltr" data-has-toc data-has-sidebar data-theme="dark" class="astro-bguv2lll"> <head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Crowdin Apps JS | Developer Portal</title><link rel="canonical" href="https://support.crowdin.com/developer/crowdin-apps-js/"/><link rel="sitemap" href="/sitemap-index.xml"/><script>window.dataLayer = window.dataLayer || []; function gtag() { window.dataLayer.push(arguments); } gtag("consent", "default", { ad_storage: "denied", ad_user_data: "denied", ad_personalization: "denied", analytics_storage: "denied", functionality_storage: "denied", personalization_storage: "denied", security_storage: "granted", wait_for_update: 2000, }); gtag("set", "ads_data_redaction", true); gtag("set", "url_passthrough", true); </script><script src="https://gtm-sst.crowdin.com/gtm.js?id=GTM-MW5LV72" defer></script><script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://gtm-sst.crowdin.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MW5LV72'); </script><script id="cookieyes" src="https://cdn-cookieyes.com/client_data/2dabfbbec8b71e267115f6a5/script.js" defer></script><link rel="icon" href="/favicon.ico" sizes="32x32"/><link rel="shortcut icon" href="/favicon.svg" type="image/svg+xml"/><meta name="generator" content="Astro v4.16.10"/><meta name="generator" content="Starlight v0.28.6"/><meta property="og:title" content="Crowdin Apps JS"/><meta property="og:type" content="article"/><meta property="og:url" content="https://support.crowdin.com/developer/crowdin-apps-js/"/><meta property="og:locale" content="en"/><meta property="og:description" content="Utilize the Crowdin Apps JS library to interact with Crowdin"/><meta property="og:site_name" content="Developer Portal"/><meta name="twitter:card" content="summary_large_image"/><meta name="description" content="Utilize the Crowdin Apps JS library to interact with Crowdin"/> <meta property="og:image" content="https://support.crowdin.com/og/developer/crowdin-apps/apps-js.png"> <meta name="twitter:image" content="https://support.crowdin.com/og/developer/crowdin-apps/apps-js.png"> <script src="/src/scripts/helpscout.js" defer></script> <style> #developer-nav-button { font-weight: 600; color: var(--sl-color-black); background-color: var(--sl-color-white); } </style> <script> window.StarlightThemeProvider = (() => { const storedTheme = typeof localStorage !== 'undefined' && localStorage.getItem('starlight-theme'); const theme = storedTheme || (window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'); document.documentElement.dataset.theme = theme === 'light' ? 'light' : 'dark'; return { updatePickers(theme = storedTheme || 'auto') { document.querySelectorAll('starlight-theme-select').forEach((picker) => { const select = picker.querySelector('select'); if (select) select.value = theme; /** @type {HTMLTemplateElement | null} */ const tmpl = document.querySelector(`#theme-icons`); const newIcon = tmpl && tmpl.content.querySelector('.' + theme); if (newIcon) { const oldIcon = picker.querySelector('svg.label-icon'); if (oldIcon) { oldIcon.replaceChildren(...newIcon.cloneNode(true).childNodes); } } }); }, }; })(); </script><template id="theme-icons"><svg aria-hidden="true" class="light astro-c6vsoqas" 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-c6vsoqas" 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-c6vsoqas" 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/privacy-policy.DIyL8RFU.css"> <style>:root{--sl-badge-default-border: var(--sl-color-accent);--sl-badge-default-bg: var(--sl-color-accent-low);--sl-badge-default-text: #fff;--sl-badge-note-border: var(--sl-color-blue);--sl-badge-note-bg: var(--sl-color-blue-low);--sl-badge-note-text: #fff;--sl-badge-danger-border: var(--sl-color-red);--sl-badge-danger-bg: var(--sl-color-red-low);--sl-badge-danger-text: #fff;--sl-badge-success-border: var(--sl-color-green);--sl-badge-success-bg: var(--sl-color-green-low);--sl-badge-success-text: #fff;--sl-badge-caution-border: var(--sl-color-orange);--sl-badge-caution-bg: var(--sl-color-orange-low);--sl-badge-caution-text: #fff;--sl-badge-tip-border: var(--sl-color-purple);--sl-badge-tip-bg: var(--sl-color-purple-low);--sl-badge-tip-text: #fff}[data-theme=light]:root{--sl-badge-default-bg: var(--sl-color-accent-high);--sl-badge-note-bg: var(--sl-color-blue-high);--sl-badge-danger-bg: var(--sl-color-red-high);--sl-badge-success-bg: var(--sl-color-green-high);--sl-badge-caution-bg: var(--sl-color-orange-high);--sl-badge-tip-bg: var(--sl-color-purple-high)}.sl-badge:where(.astro-avdet4wd){display:inline-block;border:1px solid var(--sl-color-border-badge);border-radius:.25rem;font-family:var(--sl-font-system-mono);line-height:normal;color:var(--sl-color-text-badge);background-color:var(--sl-color-bg-badge);overflow-wrap:anywhere}.sidebar-content .sl-badge:where(.astro-avdet4wd){line-height:1;font-size:var(--sl-text-xs);padding:.125rem .375rem}.sidebar-content a[aria-current=page]>.sl-badge:where(.astro-avdet4wd){--sl-color-bg-badge: transparent;--sl-color-border-badge: currentColor;color:inherit}.default:where(.astro-avdet4wd){--sl-color-bg-badge: var(--sl-badge-default-bg);--sl-color-border-badge: var(--sl-badge-default-border);--sl-color-text-badge: var(--sl-badge-default-text)}.note:where(.astro-avdet4wd){--sl-color-bg-badge: var(--sl-badge-note-bg);--sl-color-border-badge: var(--sl-badge-note-border);--sl-color-text-badge: var(--sl-badge-note-text)}.danger:where(.astro-avdet4wd){--sl-color-bg-badge: var(--sl-badge-danger-bg);--sl-color-border-badge: var(--sl-badge-danger-border);--sl-color-text-badge: var(--sl-badge-danger-text)}.success:where(.astro-avdet4wd){--sl-color-bg-badge: var(--sl-badge-success-bg);--sl-color-border-badge: var(--sl-badge-success-border);--sl-color-text-badge: var(--sl-badge-success-text)}.tip:where(.astro-avdet4wd){--sl-color-bg-badge: var(--sl-badge-tip-bg);--sl-color-border-badge: var(--sl-badge-tip-border);--sl-color-text-badge: var(--sl-badge-tip-text)}.caution:where(.astro-avdet4wd){--sl-color-bg-badge: var(--sl-badge-caution-bg);--sl-color-border-badge: var(--sl-badge-caution-border);--sl-color-text-badge: var(--sl-badge-caution-text)}.small:where(.astro-avdet4wd){font-size:var(--sl-text-xs);padding:.125rem .25rem}.medium:where(.astro-avdet4wd){font-size:var(--sl-text-sm);padding:.175rem .35rem}.large:where(.astro-avdet4wd){font-size:var(--sl-text-base);padding:.225rem .45rem}.sl-markdown-content :is(h1,h2,h3,h4,h5,h6) .sl-badge:where(.astro-avdet4wd){vertical-align:middle} .card-grid:where(.astro-zntqmydn){display:grid;gap:1rem}.card-grid:where(.astro-zntqmydn)>*{margin-top:0!important}@media (min-width: 50rem){.card-grid:where(.astro-zntqmydn){grid-template-columns:1fr 1fr;gap:1.5rem}.stagger:where(.astro-zntqmydn){--stagger-height: 5rem;padding-bottom:var(--stagger-height)}.stagger:where(.astro-zntqmydn)>*:nth-child(2n){transform:translateY(var(--stagger-height))}} .card:where(.astro-v5tidmuc){--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);padding:clamp(1rem,calc(.125rem + 3vw),2.5rem);flex-direction:column;gap:clamp(.5rem,calc(.125rem + 1vw),1rem)}.card:where(.astro-v5tidmuc):nth-child(4n+1){--sl-card-border: var(--sl-color-orange);--sl-card-bg: var(--sl-color-orange-low)}.card:where(.astro-v5tidmuc):nth-child(4n+3){--sl-card-border: var(--sl-color-green);--sl-card-bg: var(--sl-color-green-low)}.card:where(.astro-v5tidmuc):nth-child(4n+4){--sl-card-border: var(--sl-color-red);--sl-card-bg: var(--sl-color-red-low)}.card:where(.astro-v5tidmuc):nth-child(4n+5){--sl-card-border: var(--sl-color-blue);--sl-card-bg: var(--sl-color-blue-low)}.title:where(.astro-v5tidmuc){font-weight:600;font-size:var(--sl-text-h4);color:var(--sl-color-white);line-height:var(--sl-line-height-headings);gap:1rem;align-items:center}.card:where(.astro-v5tidmuc) .icon:where(.astro-v5tidmuc){border:1px solid var(--sl-card-border);background-color:var(--sl-card-bg);padding:.2em;border-radius:.25rem}.card:where(.astro-v5tidmuc) .body:where(.astro-v5tidmuc){margin:0;font-size:clamp(var(--sl-text-sm),calc(.5rem + 1vw),var(--sl-text-body))} svg:where(.astro-c6vsoqas){color:var(--sl-icon-color);font-size:var(--sl-icon-size, 1em);width:1em;height:1em} starlight-tabs:where(.astro-esqgolmp){display:block}.tablist-wrapper:where(.astro-esqgolmp){overflow-x:auto}:where(.astro-esqgolmp)[role=tablist]{display:flex;list-style:none;border-bottom:2px solid var(--sl-color-gray-5);padding:0}.tab:where(.astro-esqgolmp){margin-bottom:-2px}.tab:where(.astro-esqgolmp)>:where(.astro-esqgolmp)[role=tab]{display:flex;align-items:center;gap:.5rem;padding:0 1.25rem;text-decoration:none;border-bottom:2px solid var(--sl-color-gray-5);color:var(--sl-color-gray-3);outline-offset:var(--sl-outline-offset-inside);overflow-wrap:initial}.tab:where(.astro-esqgolmp) :where(.astro-esqgolmp)[role=tab][aria-selected=true]{color:var(--sl-color-white);border-color:var(--sl-color-text-accent);font-weight:600}.tablist-wrapper:where(.astro-esqgolmp)~[role=tabpanel]{margin-top:1rem} .sl-link-card:where(.astro-mf7fz2mj){display:grid;grid-template-columns:1fr auto;gap:.5rem;border:1px solid var(--sl-color-gray-5);border-radius:.5rem;padding:1rem;box-shadow:var(--sl-shadow-sm);position:relative}a:where(.astro-mf7fz2mj){text-decoration:none;line-height:var(--sl-line-height-headings)}a:where(.astro-mf7fz2mj):before{content:"";position:absolute;inset:0}.stack:where(.astro-mf7fz2mj){flex-direction:column;gap:.5rem}.title:where(.astro-mf7fz2mj){color:var(--sl-color-white);font-weight:600;font-size:var(--sl-text-lg)}.description:where(.astro-mf7fz2mj){color:var(--sl-color-gray-3);line-height:1.5}.icon:where(.astro-mf7fz2mj){color:var(--sl-color-gray-3)}.sl-link-card:where(.astro-mf7fz2mj):hover{background:var(--sl-color-gray-7, var(--sl-color-gray-6));border-color:var(--sl-color-gray-2)}.sl-link-card:where(.astro-mf7fz2mj):hover .icon:where(.astro-mf7fz2mj){color:var(--sl-color-white)} .sl-steps{--bullet-size: calc(var(--sl-line-height) * 1rem);--bullet-margin: .375rem;list-style:none;counter-reset:steps-counter var(--sl-steps-start, 0);padding-inline-start:0}.sl-steps>li{counter-increment:steps-counter;position:relative;padding-inline-start:calc(var(--bullet-size) + 1rem);padding-bottom:1px;min-height:calc(var(--bullet-size) + var(--bullet-margin))}.sl-steps>li+li{margin-top:0}.sl-steps>li:before{content:counter(steps-counter);position:absolute;top:0;inset-inline-start:0;width:var(--bullet-size);height:var(--bullet-size);line-height:var(--bullet-size);font-size:var(--sl-text-xs);font-weight:600;text-align:center;color:var(--sl-color-white);background-color:var(--sl-color-gray-6);border-radius:99rem;box-shadow:inset 0 0 0 1px var(--sl-color-gray-5)}.sl-steps>li:after{--guide-width: 1px;content:"";position:absolute;top:calc(var(--bullet-size) + var(--bullet-margin));bottom:var(--bullet-margin);inset-inline-start:calc((var(--bullet-size) - var(--guide-width)) / 2);width:var(--guide-width);background-color:var(--sl-color-hairline-light)}.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}} starlight-file-tree:where(.astro-p67cqifm){--x-space: 1.5rem;--y-space: .125rem;--y-pad: 0;display:block;border:1px solid var(--sl-color-gray-5);padding:1rem;background-color:var(--sl-color-gray-6);font-size:var(--sl-text-xs);font-family:var(--__sl-font-mono);overflow-x:auto}starlight-file-tree:where(.astro-p67cqifm) .directory>details{border:0;padding:0;padding-inline-start:var(--x-space);background:transparent}starlight-file-tree:where(.astro-p67cqifm) .directory>details>summary{margin-inline-start:calc(-1 * var(--x-space));border:0;padding:var(--y-pad) .625rem;font-weight:400;color:var(--sl-color-white);max-width:100%}starlight-file-tree:where(.astro-p67cqifm) .directory>details>summary::marker,starlight-file-tree:where(.astro-p67cqifm) .directory>details>summary::-webkit-details-marker{color:var(--sl-color-gray-3)}starlight-file-tree:where(.astro-p67cqifm) .directory>details>summary:hover,starlight-file-tree:where(.astro-p67cqifm) .directory>details>summary:hover .tree-icon{cursor:pointer;color:var(--sl-color-text-accent);fill:var(--sl-color-text-accent)}starlight-file-tree:where(.astro-p67cqifm) .directory>details>summary:hover~ul{border-color:var(--sl-color-gray-4)}starlight-file-tree:where(.astro-p67cqifm) .directory>details>summary:hover .highlight .tree-icon{fill:var(--sl-color-text-invert)}starlight-file-tree:where(.astro-p67cqifm) ul{margin-inline-start:.5rem;border-inline-start:1px solid var(--sl-color-gray-5);padding:0;padding-inline-start:.125rem;list-style:none}starlight-file-tree:where(.astro-p67cqifm)>ul{margin:0;border:0;padding:0}starlight-file-tree:where(.astro-p67cqifm) li{margin:var(--y-space) 0;padding:var(--y-pad) 0}starlight-file-tree:where(.astro-p67cqifm) .file{margin-inline-start:calc(var(--x-space) - .125rem);color:var(--sl-color-white)}starlight-file-tree:where(.astro-p67cqifm) .tree-entry{display:inline-flex;align-items:flex-start;flex-wrap:wrap;max-width:calc(100% - 1rem)}@media (min-width: 30em){starlight-file-tree:where(.astro-p67cqifm) .tree-entry{flex-wrap:nowrap}}starlight-file-tree:where(.astro-p67cqifm) .tree-entry>:first-child{flex-shrink:0}starlight-file-tree:where(.astro-p67cqifm) .empty{color:var(--sl-color-gray-3);padding-inline-start:.375rem}starlight-file-tree:where(.astro-p67cqifm) .comment{color:var(--sl-color-gray-3);padding-inline-start:1.625rem;max-width:24rem;min-width:12rem}starlight-file-tree:where(.astro-p67cqifm) .highlight{display:inline-block;border-radius:.25rem;padding-inline-end:.5rem;color:var(--sl-color-text-invert);background-color:var(--sl-color-text-accent)}starlight-file-tree:where(.astro-p67cqifm) svg{display:inline;fill:var(--sl-color-gray-3);vertical-align:middle;margin-inline:.25rem .375rem;width:.875rem;height:.875rem}starlight-file-tree:where(.astro-p67cqifm) .highlight svg.tree-icon{fill:var(--sl-color-text-invert)} .sl-link-button:where(.astro-xwgiixxa){align-items:center;border:1px solid transparent;border-radius:999rem;display:inline-flex;font-size:var(--sl-text-sm);gap:.5em;line-height:1.1875;outline-offset:.25rem;padding:.4375rem 1.125rem;text-decoration:none}.sl-link-button:where(.astro-xwgiixxa).primary{background:var(--sl-color-text-accent);border-color:var(--sl-color-text-accent);color:var(--sl-color-black)}.sl-link-button:where(.astro-xwgiixxa).primary:hover{color:var(--sl-color-black)}.sl-link-button:where(.astro-xwgiixxa).secondary{border-color:inherit;color:var(--sl-color-white)}.sl-link-button:where(.astro-xwgiixxa).minimal{color:var(--sl-color-white);padding-inline:0}.sl-link-button:where(.astro-xwgiixxa) svg{flex-shrink:0}@media (min-width: 50rem){.sl-link-button:where(.astro-xwgiixxa){font-size:var(--sl-text-base);padding:.9375rem 1.25rem}}.sl-markdown-content .sl-link-button:where(.astro-xwgiixxa){margin-inline-end:1rem}.sl-markdown-content .sl-link-button:where(.astro-xwgiixxa):not(:where(p *)){margin-block:1rem} </style><script type="module" src="/_astro/hoisted.BV5E3Qmv.js"></script> <script type="module" src="/_astro/page.7qqag-5g.js"></script><script src="/_astro/Tabs.astro_astro_type_script_index_0_lang.3nBd5krW.js" type="module"></script></head> <body class="astro-bguv2lll"> <a href="#_top" class="astro-7q3lir66">Skip to content</a> <div class="page sl-flex astro-vrdttmbt"> <header class="header astro-vrdttmbt"><div class="header sl-flex astro-kmkmnagf"> <div class="title-wrapper sl-flex astro-kmkmnagf"> <div class="astro-dcan6uai"> <a href="/" class="site-title sl-flex astro-m46x6ez3"> <img class="light:sl-hidden astro-m46x6ez3" alt="" src="/_astro/light.CAHvKVIz.svg" width="235" height="39"> <img class="dark:sl-hidden astro-m46x6ez3" alt="" src="/_astro/dark.CcUzcp8d.svg" width="235" height="39"> <span class="sr-only astro-m46x6ez3"> Crowdin Docs </span> </a> <ul class="astro-vtgkq7vy"> <li class="astro-vtgkq7vy"> <a href="/introduction/" id="crowdin-nav-button" class="nav-link astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy"> Crowdin Help </a> </li><li class="astro-vtgkq7vy"> <a href="/enterprise/introduction/" id="enterprise-nav-button" class="nav-link astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy"> Enterprise Help </a> </li><li class="astro-vtgkq7vy"> <a href="/developer/crowdin-apps-about/" id="developer-nav-button" class="nav-link astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy"> Developer Portal </a> </li><li class="astro-vtgkq7vy"> <a href="https://store.crowdin.com" target="_blank" class="nav-link astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy"> Store </a> </li><li class="astro-vtgkq7vy"> <a href="https://crowdin.com/blog" target="_blank" class="nav-link astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy"> Blog </a> </li><li class="astro-vtgkq7vy"> <a href="https://community.crowdin.com/" target="_blank" class="nav-link astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy astro-vtgkq7vy"> Community </a> </li> </ul> </div> </div> <div class="sl-flex astro-kmkmnagf"> <site-search data-translations="{&#34;placeholder&#34;:&#34;Search&#34;}" class="astro-v37mnknz"> <button data-open-modal disabled aria-label="Search" aria-keyshortcuts="Control+K" class="astro-v37mnknz"> <svg aria-hidden="true" class="astro-v37mnknz astro-c6vsoqas" 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-v37mnknz" aria-hidden="true">Search</span> <kbd class="sl-hidden md:sl-flex astro-v37mnknz" style="display: none;"> <kbd class="astro-v37mnknz">Ctrl</kbd><kbd class="astro-v37mnknz">K</kbd> </kbd> </button> <dialog style="padding:0" aria-label="Search" class="astro-v37mnknz"> <div class="dialog-frame sl-flex astro-v37mnknz"> <button data-close-modal class="sl-flex md:sl-hidden astro-v37mnknz"> Cancel </button> <div class="search-container astro-v37mnknz"> <div id="starlight__search" class="astro-v37mnknz"></div> </div> </div> </dialog> </site-search> <script> (() => { const openBtn = document.querySelector('button[data-open-modal]'); const shortcut = openBtn?.querySelector('kbd'); if (!openBtn || !(shortcut instanceof HTMLElement)) return; const platformKey = shortcut.querySelector('kbd'); if (platformKey && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)) { platformKey.textContent = '⌘'; openBtn.setAttribute('aria-keyshortcuts', 'Meta+K'); } shortcut.style.display = ''; })(); </script> </div> <div class="sl-hidden md:sl-flex right-group astro-kmkmnagf"> <div class="sl-flex social-icons astro-kmkmnagf"> <a href="https://x.com/crowdin" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">X</span><svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" 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/crowdin" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">LinkedIn</span><svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" 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><a href="https://youtube.com/@crowdin-localization" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">YouTube</span><svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M23.5 6.2A3 3 0 0 0 21.4 4c-1.9-.5-9.4-.5-9.4-.5s-7.5 0-9.4.5A3 3 0 0 0 .5 6.3C0 8 0 12 0 12s0 4 .5 5.8A3 3 0 0 0 2.6 20c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2c.5-2 .5-5.9.5-5.9s0-4-.5-5.8zm-14 9.4V8.4l6.3 3.6-6.3 3.6z"/></svg> </a><a href="https://github.com/crowdin" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">GitHub</span><svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" 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> </div> <starlight-theme-select> <label style="--sl-select-width: 6.25em" class="astro-4yphtoen"> <span class="sr-only astro-4yphtoen">Select theme</span> <svg aria-hidden="true" class="icon label-icon astro-4yphtoen astro-c6vsoqas" 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 value="auto" class="astro-4yphtoen"> <option value="dark" class="astro-4yphtoen">Dark</option><option value="light" class="astro-4yphtoen">Light</option><option value="auto" selected class="astro-4yphtoen">Auto</option> </select> <svg aria-hidden="true" class="icon caret astro-4yphtoen astro-c6vsoqas" 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> <script> StarlightThemeProvider.updatePickers(); </script> </div> </div> </header> <nav class="sidebar astro-vrdttmbt" aria-label="Main"> <starlight-menu-button class="astro-jif73yzw"> <button aria-expanded="false" aria-label="Menu" aria-controls="starlight__sidebar" class="sl-flex md:sl-hidden astro-jif73yzw"> <svg aria-hidden="true" class="astro-jif73yzw astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M3 8h18a1 1 0 1 0 0-2H3a1 1 0 0 0 0 2Zm18 8H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Zm0-5H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Z"/></svg> </button> </starlight-menu-button> <div id="starlight__sidebar" class="sidebar-pane astro-vrdttmbt"> <div class="sidebar-content sl-flex astro-vrdttmbt"> <div hidden data-starlight-multi-sidebar-label="Crowdin Help"><sl-sidebar-state-persist data-hash="170wlro" class="astro-kku4brbg"> <script> (() => { try { if (!matchMedia('(min-width: 50em)').matches) return; /** @type {HTMLElement | null} */ const target = document.querySelector('sl-sidebar-state-persist'); const state = JSON.parse(sessionStorage.getItem('sl-sidebar-state') || '0'); if (!target || !state || target.dataset.hash !== state.hash) return; window._starlightScrollRestore = state.scroll; customElements.define( 'sl-sidebar-restore', class SidebarRestore extends HTMLElement { connectedCallback() { try { const idx = parseInt(this.dataset.index || ''); const details = this.closest('details'); if (details && typeof state.open[idx] === 'boolean') details.open = state.open[idx]; } catch {} } } ); } catch {} })(); </script> <ul class="top-level astro-3ii7xxms"> <li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="0"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Getting Started</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/introduction/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Introduction</span> </a> </li><li class="astro-3ii7xxms"> <a href="/for-managers/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">For Managers</span> </a> </li><li class="astro-3ii7xxms"> <a href="/for-translators/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">For Translators</span> </a> </li><li class="astro-3ii7xxms"> <a href="/supported-formats/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Supported Formats</span> </a> </li><li class="astro-3ii7xxms"> <a href="/migrating-to-crowdin/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Migrating to Crowdin</span> </a> </li><li class="astro-3ii7xxms"> <a href="/additional-support-services/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Additional Support Services</span> </a> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="28"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Account</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/account-notifications/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Notifications</span> </a> </li><li class="astro-3ii7xxms"> <a href="/messages/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Messages</span> </a> </li><li class="astro-3ii7xxms"> <a href="/account-settings/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Settings</span> </a> </li> </ul> </details> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="1"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Translation Process</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/translation-strategies/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Translation Strategies</span> </a> </li><li class="astro-3ii7xxms"> <a href="/crowdin-ai/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Crowdin AI</span> </a> </li><li class="astro-3ii7xxms"> <a href="/pre-translation/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Pre-Translation</span> </a> </li><li class="astro-3ii7xxms"> <a href="/ordering-professional-translations/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Ordering Professional Translations</span> </a> </li><li class="astro-3ii7xxms"> <a href="/offline-translation/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Offline Translation</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="2"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Project Management</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/creating-project/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Creating a Project</span> </a> </li><li class="astro-3ii7xxms"> <a href="/screenshots/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Screenshots</span> </a> </li><li class="astro-3ii7xxms"> <a href="/project-activity/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Project Activity</span> </a> </li><li class="astro-3ii7xxms"> <a href="/discussions/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Discussions</span> </a> </li><li class="astro-3ii7xxms"> <a href="/webhooks/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Webhooks</span> </a> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="29"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Sources</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/uploading-files/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Uploading Source Files</span> </a> </li><li class="astro-3ii7xxms"> <a href="/file-management/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">File Management</span> </a> </li><li class="astro-3ii7xxms"> <a href="/string-management/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">String Management</span> </a> </li><li class="astro-3ii7xxms"> <a href="/version-management/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Version Management</span> </a> </li><li class="astro-3ii7xxms"> <a href="/custom-segmentation/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Custom Segmentation</span> </a> </li><li class="astro-3ii7xxms"> <a href="/asset-localization/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Asset Localization</span> </a> </li><li class="astro-3ii7xxms"> <a href="/csv-xlsx-configuration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">CSV / XLSX File Configuration</span> </a> </li><li class="astro-3ii7xxms"> <a href="/xml-configuration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">XML File Configuration</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="30"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Translations</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/downloading-translations/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Downloading Translations</span> </a> </li><li class="astro-3ii7xxms"> <a href="/uploading-translations/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Uploading Existing Translations</span> </a> </li><li class="astro-3ii7xxms"> <a href="/bundles/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Target Files Bundles</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="31"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Project Settings</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/project-settings/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">General</span> </a> </li><li class="astro-3ii7xxms"> <a href="/project-settings/privacy-collaboration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Privacy &amp; Collaboration</span> </a> </li><li class="astro-3ii7xxms"> <a href="/project-settings/languages/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Languages</span> </a> </li><li class="astro-3ii7xxms"> <a href="/project-settings/qa-checks/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">QA Checks</span> </a> </li><li class="astro-3ii7xxms"> <a href="/project-settings/translation-memories/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Translation Memories</span> </a> </li><li class="astro-3ii7xxms"> <a href="/project-settings/glossaries/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Glossaries</span> </a> </li><li class="astro-3ii7xxms"> <a href="/project-settings/machine-translation/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Machine Translation</span> </a> </li><li class="astro-3ii7xxms"> <a href="/project-settings/ai/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">AI</span> </a> </li><li class="astro-3ii7xxms"> <a href="/project-settings/pre-translate/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Pre-Translate</span> </a> </li><li class="astro-3ii7xxms"> <a href="/project-settings/import/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Import</span> </a> </li><li class="astro-3ii7xxms"> <a href="/project-settings/export/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Export</span> </a> </li><li class="astro-3ii7xxms"> <a href="/project-settings/labels/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Labels</span> </a> </li><li class="astro-3ii7xxms"> <a href="/project-settings/parser-configuration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Parser Configuration</span> </a> </li><li class="astro-3ii7xxms"> <a href="/project-settings/file-processors/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">File Processors</span> </a> </li> </ul> </details> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="3"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Team Management</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/roles/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Roles</span> </a> </li><li class="astro-3ii7xxms"> <a href="/inviting-people/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Inviting People</span> </a> </li><li class="astro-3ii7xxms"> <a href="/project-members/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Project Members</span> </a> </li><li class="astro-3ii7xxms"> <a href="/manager-permissions/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Manager Permissions</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="4"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Integrations</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/integrations/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Overview</span> </a> </li><li class="astro-3ii7xxms"> <a href="/github-integration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">GitHub Integration</span> </a> </li><li class="astro-3ii7xxms"> <a href="/gitlab-integration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">GitLab Integration</span> </a> </li><li class="astro-3ii7xxms"> <a href="/bitbucket-integration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Bitbucket Integration</span> </a> </li><li class="astro-3ii7xxms"> <a href="/azure-repos-integration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Azure Repos Integration</span> </a> </li><li class="astro-3ii7xxms"> <a href="/configuring-vcs-integrations-online/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Configuring VCS Integrations Online</span> </a> </li><li class="astro-3ii7xxms"> <a href="/content-delivery/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Content Delivery</span> </a> </li><li class="astro-3ii7xxms"> <a href="/jira-integration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Jira Integration</span> </a> </li><li class="astro-3ii7xxms"> <a href="/figma-plugin/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Figma Plugin</span> </a> </li><li class="astro-3ii7xxms"> <a href="/sketch-plugin/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Sketch Plugin</span> </a> </li><li class="astro-3ii7xxms"> <a href="/adobe-xd-plugin/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Adobe XD Plugin</span> </a> </li><li class="astro-3ii7xxms"> <a href="/google-play-integration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Google Play Integration</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="5"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Localization Resources</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/glossary/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Glossary</span> </a> </li><li class="astro-3ii7xxms"> <a href="/machine-translation/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Machine Translation</span> </a> </li><li class="astro-3ii7xxms"> <a href="/translation-memory/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Translation Memory</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="6"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Online Editor</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/online-editor/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Editor Overview</span> </a> </li><li class="astro-3ii7xxms"> <a href="/expression-syntax-elements/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Expression Syntax Elements</span> </a> </li><li class="astro-3ii7xxms"> <a href="/icu-message-syntax/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">ICU Message Syntax</span> </a> </li><li class="astro-3ii7xxms"> <a href="/translation-consistency/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Translation Consistency</span> </a> </li><li class="astro-3ii7xxms"> <a href="/word-counter/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Word Counter</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="7"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Tasks</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/tasks/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Project Tasks</span> </a> </li><li class="astro-3ii7xxms"> <a href="/user-tasks/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">User Tasks</span> </a> </li><li class="astro-3ii7xxms"> <a href="/crowdin-language-services/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Crowdin Language Services</span> </a> </li><li class="astro-3ii7xxms"> <a href="/blend-integration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">BLEND Integration</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="8"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Reports</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/project-reports/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Project Reports</span> </a> </li><li class="astro-3ii7xxms"> <a href="/contributor-reports/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Contributor Reports</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="9"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Billing and Payments</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/payments-invoices/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Payments and Invoices</span> </a> </li><li class="astro-3ii7xxms"> <a href="/changing-subscription-plan/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Changing Subscription Plan</span> </a> </li><li class="astro-3ii7xxms"> <a href="/crowdin-managed-services/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Crowdin Managed Services</span> </a> </li><li class="astro-3ii7xxms"> <a href="/app-subscriptions/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">App Subscriptions</span> </a> </li><li class="astro-3ii7xxms"> <a href="/billing-settings/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Billing Settings</span> </a> </li> </ul> </details> </li> </ul> <script> (() => { const scroller = document.getElementById('starlight__sidebar'); if (!window._starlightScrollRestore || !scroller) return; scroller.scrollTop = window._starlightScrollRestore; delete window._starlightScrollRestore; })(); </script> </sl-sidebar-state-persist> <div class="md:sl-hidden"> <div class="mobile-preferences sl-flex astro-wu23bvmt"> <div class="sl-flex social-icons astro-wu23bvmt"> <a href="https://x.com/crowdin" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">X</span><svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" 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/crowdin" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">LinkedIn</span><svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" 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><a href="https://youtube.com/@crowdin-localization" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">YouTube</span><svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M23.5 6.2A3 3 0 0 0 21.4 4c-1.9-.5-9.4-.5-9.4-.5s-7.5 0-9.4.5A3 3 0 0 0 .5 6.3C0 8 0 12 0 12s0 4 .5 5.8A3 3 0 0 0 2.6 20c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2c.5-2 .5-5.9.5-5.9s0-4-.5-5.8zm-14 9.4V8.4l6.3 3.6-6.3 3.6z"/></svg> </a><a href="https://github.com/crowdin" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">GitHub</span><svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" 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> </div> <starlight-theme-select> <label style="--sl-select-width: 6.25em" class="astro-4yphtoen"> <span class="sr-only astro-4yphtoen">Select theme</span> <svg aria-hidden="true" class="icon label-icon astro-4yphtoen astro-c6vsoqas" 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 value="auto" class="astro-4yphtoen"> <option value="dark" class="astro-4yphtoen">Dark</option><option value="light" class="astro-4yphtoen">Light</option><option value="auto" selected class="astro-4yphtoen">Auto</option> </select> <svg aria-hidden="true" class="icon caret astro-4yphtoen astro-c6vsoqas" 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> <script> StarlightThemeProvider.updatePickers(); </script> </div> </div></div><div hidden data-starlight-multi-sidebar-label="Enterprise Help"><sl-sidebar-state-persist data-hash="0mapk94" class="astro-kku4brbg"> <script> (() => { try { if (!matchMedia('(min-width: 50em)').matches) return; /** @type {HTMLElement | null} */ const target = document.querySelector('sl-sidebar-state-persist'); const state = JSON.parse(sessionStorage.getItem('sl-sidebar-state') || '0'); if (!target || !state || target.dataset.hash !== state.hash) return; window._starlightScrollRestore = state.scroll; customElements.define( 'sl-sidebar-restore', class SidebarRestore extends HTMLElement { connectedCallback() { try { const idx = parseInt(this.dataset.index || ''); const details = this.closest('details'); if (details && typeof state.open[idx] === 'boolean') details.open = state.open[idx]; } catch {} } } ); } catch {} })(); </script> <ul class="top-level astro-3ii7xxms"> <li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="10"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Getting Started</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/introduction/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Enterprise Introduction</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/for-managers/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">For Managers</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/for-translators/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">For Translators</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/for-vendors/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">For Vendors</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/supported-formats/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Supported Formats</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/migrating-to-crowdin-enterprise/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Migrating to Crowdin Enterprise</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/additional-support-services/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Additional Support Services</span> </a> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="32"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Account</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/account-notifications/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Notifications</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/messages/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Messages</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/account-settings/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Settings</span> </a> </li> </ul> </details> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="11"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Translation Process</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/translation-strategies/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Translation Strategies</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/crowdin-ai/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Crowdin AI</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/pre-translation/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Pre-Translation</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/offline-translation/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Offline Translation</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="12"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Organization Management</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/organization/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Start with an Organization</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/groups/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Groups</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/vendors/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Vendors</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/clients/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Clients</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/crowdsourcing/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Crowdsourcing</span> </a> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="33"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Workflows</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/workflows/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Workflow Overview</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/translation-proofreading-by-vendor/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Translation and Proofreading by Vendor</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/source-text-review/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Source Text Review</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/custom-code/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Custom Code</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/translation-by-api-vendor/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Translation by API Vendor</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="34"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Organization Settings</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/organization-settings/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Overview</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/authentication/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Authentication</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/saml/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">SAML single sign-on</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/oidc/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">OpenID Connect</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/fields/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Fields</span> <span class="sl-badge default small astro-3ii7xxms astro-avdet4wd">New</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/custom-placeholders/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Custom Placeholders</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/custom-qa-checks/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Custom QA Checks</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/permissions-granularity-mode/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Permission Granularity Mode</span> </a> </li> </ul> </details> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="13"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Project Management</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/creating-project/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Creating a Project</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/screenshots/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Screenshots</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/project-activity/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Project Activity</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/webhooks/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Webhooks</span> </a> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="35"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Sources</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/uploading-files/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Uploading Source Files</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/file-management/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">File Management</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/string-management/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">String Management</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/version-management/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Version Management</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/custom-segmentation/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Custom Segmentation</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/asset-localization/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Asset Localization</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/csv-xlsx-configuration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">CSV / XLSX File Configuration</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/xml-configuration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">XML File Configuration</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="36"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Translations</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/downloading-translations/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Downloading Translations</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/uploading-translations/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Uploading Existing Translations</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/bundles/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Target Files Bundles</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="37"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Project Settings</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/project-settings/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">General</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/project-settings/privacy/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Privacy</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/project-settings/languages/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Languages</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/project-settings/qa-checks/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Quality Assurance</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/project-settings/translation-memories/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Translation Memories</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/project-settings/glossaries/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Glossaries</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/project-settings/machine-translation/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Machine Translation</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/project-settings/ai/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">AI</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/project-settings/import/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Import</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/project-settings/export/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Export</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/project-settings/labels/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Labels</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/project-settings/parser-configuration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Parser Configuration</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/project-settings/file-processors/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">File Processors</span> </a> </li> </ul> </details> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="14"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Team Management</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/roles/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Roles</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/inviting-people/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Inviting People</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/project-members/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Project Members</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/organization-members/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Organization Members</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/teams/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Teams</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="15"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Integrations</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/integrations/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Overview</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/github-integration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">GitHub Integration</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/gitlab-integration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">GitLab Integration</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/bitbucket-integration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Bitbucket Integration</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/azure-repos-integration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Azure Repos Integration</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/configuring-vcs-integrations-online/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Configuring VCS Integrations Online</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/content-delivery/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Content Delivery</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/jira-integration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Jira Integration</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/figma-plugin/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Figma Plugin</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/sketch-plugin/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Sketch Plugin</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/adobe-xd-plugin/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Adobe XD Plugin</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/google-play-integration/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Google Play Integration</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="16"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Localization Resources</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/glossary/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Glossary</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/machine-translation/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Machine Translation</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/translation-memory/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Translation Memory</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="17"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Online Editor</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/online-editor/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Overview</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/expression-syntax-elements/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Expression Syntax Elements</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/icu-message-syntax/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">ICU Message Syntax</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/translation-consistency/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Translation Consistency</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/word-counter/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Word Counter</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="18"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Tasks</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/tasks/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Project Tasks</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/user-tasks/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">User Tasks</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="19"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Reports</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/organization-reports/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Organization Reports</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/project-reports/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Project Reports</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/contributor-reports/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Contributor Reports</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="20"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Billing and Payments</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/enterprise/payments-invoices/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Payments and Invoices</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/changing-subscription-plan/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Changing Subscription Plan</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/crowdin-managed-services/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Crowdin Managed Services</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/app-subscriptions/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">App Subscriptions</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/billing-settings/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Billing Settings</span> </a> </li> </ul> </details> </li> </ul> <script> (() => { const scroller = document.getElementById('starlight__sidebar'); if (!window._starlightScrollRestore || !scroller) return; scroller.scrollTop = window._starlightScrollRestore; delete window._starlightScrollRestore; })(); </script> </sl-sidebar-state-persist> <div class="md:sl-hidden"> <div class="mobile-preferences sl-flex astro-wu23bvmt"> <div class="sl-flex social-icons astro-wu23bvmt"> <a href="https://x.com/crowdin" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">X</span><svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" 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/crowdin" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">LinkedIn</span><svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" 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><a href="https://youtube.com/@crowdin-localization" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">YouTube</span><svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M23.5 6.2A3 3 0 0 0 21.4 4c-1.9-.5-9.4-.5-9.4-.5s-7.5 0-9.4.5A3 3 0 0 0 .5 6.3C0 8 0 12 0 12s0 4 .5 5.8A3 3 0 0 0 2.6 20c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2c.5-2 .5-5.9.5-5.9s0-4-.5-5.8zm-14 9.4V8.4l6.3 3.6-6.3 3.6z"/></svg> </a><a href="https://github.com/crowdin" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">GitHub</span><svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" 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> </div> <starlight-theme-select> <label style="--sl-select-width: 6.25em" class="astro-4yphtoen"> <span class="sr-only astro-4yphtoen">Select theme</span> <svg aria-hidden="true" class="icon label-icon astro-4yphtoen astro-c6vsoqas" 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 value="auto" class="astro-4yphtoen"> <option value="dark" class="astro-4yphtoen">Dark</option><option value="light" class="astro-4yphtoen">Light</option><option value="auto" selected class="astro-4yphtoen">Auto</option> </select> <svg aria-hidden="true" class="icon caret astro-4yphtoen astro-c6vsoqas" 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> <script> StarlightThemeProvider.updatePickers(); </script> </div> </div></div><div data-starlight-multi-sidebar-label="Developer Portal"><sl-sidebar-state-persist data-hash="0981s9n" class="astro-kku4brbg"> <script> (() => { try { if (!matchMedia('(min-width: 50em)').matches) return; /** @type {HTMLElement | null} */ const target = document.querySelector('sl-sidebar-state-persist'); const state = JSON.parse(sessionStorage.getItem('sl-sidebar-state') || '0'); if (!target || !state || target.dataset.hash !== state.hash) return; window._starlightScrollRestore = state.scroll; customElements.define( 'sl-sidebar-restore', class SidebarRestore extends HTMLElement { connectedCallback() { try { const idx = parseInt(this.dataset.index || ''); const details = this.closest('details'); if (details && typeof state.open[idx] === 'boolean') details.open = state.open[idx]; } catch {} } } ); } catch {} })(); </script> <ul class="top-level astro-3ii7xxms"> <li class="astro-3ii7xxms"> <details open class="astro-3ii7xxms"> <sl-sidebar-restore data-index="21"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Crowdin Apps</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-about/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">About Crowdin Apps</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-quick-start/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Quick Start</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-app-descriptor/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">App Descriptor</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-js/" aria-current="page" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Crowdin Apps JS</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-installation/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">App Installation</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-security/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Security for Crowdin Apps</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-user-interface/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">User Interface</span> </a> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="38"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Publishing</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-monetization/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Crowdin Apps Monetization</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-publishing/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Publishing Your App</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-releasing/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Releasing Crowdin Apps</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-promoting/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Crowdin Apps Promoting</span> </a> </li> </ul> </details> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="22"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Modules</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="39"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">UI Modules</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-modules-ui/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Overview</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-project-integrations/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Integrations</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-project-tools/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Tools</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-project-reports/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Reports</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-project-menu/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Project Menu</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-project-menu-crowdsource/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Project Menu (Crowdsource View)</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-editor-right-panel/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Editor Right Panel</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-editor-translations-panel/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Editor Translations Panel</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-organization-menu/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Organization Menu</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-organization-menu-crowdsource/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Organization Menu (Crowdsource View)</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-profile-resources-menu/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Resources</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-custom-mt/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Custom MT</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-custom-ai/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Custom AI</span> <span class="sl-badge default small astro-3ii7xxms astro-avdet4wd">New</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-ai-prompt-provider/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">AI Prompt Provider</span> <span class="sl-badge default small astro-3ii7xxms astro-avdet4wd">New</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-context-menu/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Context Menu</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-modal/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Modal</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="40"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">File Processing Modules</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-modules-file-processing/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Overview</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-custom-file-format/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Custom File Format</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-file-pre-import-processing/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">File Pre-Import Processing</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-file-post-import-processing/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">File Post-Import Processing</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-file-pre-export-processing/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">File Pre-Export Processing</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-file-post-export-processing/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">File Post-Export Processing</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="41"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Other</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-api/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">API</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-custom-spellchecker/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Custom Spellchecker</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-external-qa-check/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">External QA Check</span> <span class="sl-badge default small astro-3ii7xxms astro-avdet4wd">New</span> </a> </li> </ul> </details> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="23"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Capabilities</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/developer/in-context-localization/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">In-Context</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/webhooks/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Webhook Events</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/pseudolocalization/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Pseudolocalization</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/editor-themes/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Editor Themes</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="24"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">API</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/developer/api/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Overview</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/api/v2/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Crowdin API (File-based)</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/api/v2/string-based/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Crowdin API (String-based)</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/enterprise/api/v2/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Enterprise API (File-based)</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/enterprise/api/v2/string-based/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Enterprise API (String-based)</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/graphql-api/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">GraphQL API</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/croql/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Crowdin Query Language (CroQL)</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/language-codes/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Language Codes</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="25"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Dev Tools</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/developer/dev-tools/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Overview</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/configuration-file/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Configuration File</span> </a> </li><li class="astro-3ii7xxms"> <a href="https://crowdin.github.io/crowdin-cli/" class="astro-3ii7xxms" target="_blank"> <span class="astro-3ii7xxms">Console Client (CLI)</span> </a> </li><li class="astro-3ii7xxms"> <a href="https://github.com/marketplace/actions/crowdin-action" class="astro-3ii7xxms" target="_blank"> <span class="astro-3ii7xxms">GitHub Action</span> </a> </li><li class="astro-3ii7xxms"> <a href="https://marketplace.visualstudio.com/items?itemName=Crowdin.vscode-crowdin" class="astro-3ii7xxms" target="_blank"> <span class="astro-3ii7xxms">Visual Studio Code Plugin</span> </a> </li><li class="astro-3ii7xxms"> <a href="https://github.com/crowdin/android-studio-plugin#readme" class="astro-3ii7xxms" target="_blank"> <span class="astro-3ii7xxms">Android Studio Plugin</span> </a> </li><li class="astro-3ii7xxms"> <a href="https://crowdin.github.io/mobile-sdk-android/" class="astro-3ii7xxms" target="_blank"> <span class="astro-3ii7xxms">Android SDK</span> </a> </li><li class="astro-3ii7xxms"> <a href="https://crowdin.github.io/mobile-sdk-ios/" class="astro-3ii7xxms" target="_blank"> <span class="astro-3ii7xxms">iOS SDK</span> </a> </li><li class="astro-3ii7xxms"> <a href="https://crowdin.github.io/ota-client-js/" class="astro-3ii7xxms" target="_blank"> <span class="astro-3ii7xxms">Website JS SDK</span> </a> </li><li class="astro-3ii7xxms"> <a href="https://github.com/crowdin/flutter-sdk#readme" class="astro-3ii7xxms" target="_blank"> <span class="astro-3ii7xxms">Flutter SDK</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="26"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Security</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/developer/ip-addresses/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">IP Addresses and Domains</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/understanding-scopes/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Understanding Scopes</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/authorizing-oauth-apps/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Authorizing OAuth Apps</span> </a> </li> </ul> </details> </li><li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"> <sl-sidebar-restore data-index="27"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"> <span class="large astro-3ii7xxms">Guides</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"> <a href="/developer/apps-localization/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Mobile Apps Localization</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/automating-screenshot-management/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Automating Screenshot Management</span> </a> </li><li class="astro-3ii7xxms"> <a href="/developer/shopify-apps-localization/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Shopify Apps Localization</span> </a> </li> </ul> </details> </li> </ul> <script> (() => { const scroller = document.getElementById('starlight__sidebar'); if (!window._starlightScrollRestore || !scroller) return; scroller.scrollTop = window._starlightScrollRestore; delete window._starlightScrollRestore; })(); </script> </sl-sidebar-state-persist> <div class="md:sl-hidden"> <div class="mobile-preferences sl-flex astro-wu23bvmt"> <div class="sl-flex social-icons astro-wu23bvmt"> <a href="https://x.com/crowdin" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">X</span><svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" 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/crowdin" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">LinkedIn</span><svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" 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><a href="https://youtube.com/@crowdin-localization" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">YouTube</span><svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M23.5 6.2A3 3 0 0 0 21.4 4c-1.9-.5-9.4-.5-9.4-.5s-7.5 0-9.4.5A3 3 0 0 0 .5 6.3C0 8 0 12 0 12s0 4 .5 5.8A3 3 0 0 0 2.6 20c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2c.5-2 .5-5.9.5-5.9s0-4-.5-5.8zm-14 9.4V8.4l6.3 3.6-6.3 3.6z"/></svg> </a><a href="https://github.com/crowdin" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">GitHub</span><svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" 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> </div> <starlight-theme-select> <label style="--sl-select-width: 6.25em" class="astro-4yphtoen"> <span class="sr-only astro-4yphtoen">Select theme</span> <svg aria-hidden="true" class="icon label-icon astro-4yphtoen astro-c6vsoqas" 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 value="auto" class="astro-4yphtoen"> <option value="dark" class="astro-4yphtoen">Dark</option><option value="light" class="astro-4yphtoen">Light</option><option value="auto" selected class="astro-4yphtoen">Auto</option> </select> <svg aria-hidden="true" class="icon caret astro-4yphtoen astro-c6vsoqas" 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> <script> StarlightThemeProvider.updatePickers(); </script> </div> </div></div> </div> </div> </nav> <div class="main-frame astro-vrdttmbt"> <div class="lg:sl-flex astro-67yu43on"> <aside class="right-sidebar-container astro-67yu43on"> <div class="right-sidebar astro-67yu43on"> <div class="lg:sl-hidden astro-pb3aqygn"><mobile-starlight-toc data-min-h="2" data-max-h="4" class="astro-bboabfps"><nav aria-labelledby="starlight__on-this-page--mobile" class="astro-bboabfps"><details id="starlight__mobile-toc" class="astro-bboabfps"><summary id="starlight__on-this-page--mobile" class="sl-flex astro-bboabfps"><div class="toggle sl-flex astro-bboabfps">On this page<svg aria-hidden="true" class="caret astro-bboabfps astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </div><span class="display-current astro-bboabfps"></span></summary><div class="dropdown astro-bboabfps"><ul class="isMobile astro-4elwmllm" style="--depth: 0;"> <li class="astro-4elwmllm" style="--depth: 0;"> <a href="#_top" data-shb-heading="Overview" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Overview</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#getting-started" data-shb-heading="Getting Started" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Getting Started</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#global-actions" data-shb-heading="Global Actions" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Global Actions</span> </a> <ul class="isMobile astro-4elwmllm" style="--depth: 1;"> <li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-context" data-shb-heading="AP.getContext(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.getContext(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-jwt-token" data-shb-heading="AP.getJwtToken(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.getJwtToken(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-theme" data-shb-heading="AP.getTheme()" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.getTheme()</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#redirect" data-shb-heading="AP.redirect(path)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.redirect(path)</span> </a> </li> </ul> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#editor-module-actions" data-shb-heading="Editor Module Actions" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Editor Module Actions</span> </a> <ul class="isMobile astro-4elwmllm" style="--depth: 1;"> <li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-string" data-shb-heading="AP.editor.getString(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getString(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-selected-strings" data-shb-heading="AP.editor.getSelectedStrings(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getSelectedStrings(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-translations" data-shb-heading="AP.editor.getTranslations(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getTranslations(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-top-translation" data-shb-heading="AP.editor.getTopTranslation(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getTopTranslation(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-translation" data-shb-heading="AP.editor.setTranslation(text)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setTranslation(text)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#append-translation" data-shb-heading="AP.editor.appendTranslation(text)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.appendTranslation(text)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#clear-translation" data-shb-heading="AP.editor.clearTranslation()" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.clearTranslation()</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-focus" data-shb-heading="AP.editor.setFocus()" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setFocus()</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#notice-message" data-shb-heading="AP.editor.noticeMessage(message)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.noticeMessage(message)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#success-message" data-shb-heading="AP.editor.successMessage(message)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.successMessage(message)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#error-message" data-shb-heading="AP.editor.errorMessage(message)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.errorMessage(message)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-application-notification" data-shb-heading="AP.editor.setApplicationNotification(1)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setApplicationNotification(1)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#clear-application-notification" data-shb-heading="AP.editor.clearApplicationNotification()" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.clearApplicationNotification()</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-custom-filter" data-shb-heading="AP.editor.getCustomFilter(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getCustomFilter(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-custom-filter" data-shb-heading="AP.editor.setCustomFilter(customFilter)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setCustomFilter(customFilter)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#reset-custom-filter" data-shb-heading="AP.editor.resetCustomFilter()" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.resetCustomFilter()</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-filter" data-shb-heading="AP.editor.getFilter(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getFilter(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-filter" data-shb-heading="AP.editor.setFilter(filterNumber)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setFilter(filterNumber)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-filters-list" data-shb-heading="AP.editor.getFiltersList(filters)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getFiltersList(filters)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-page" data-shb-heading="AP.editor.getPage(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getPage(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-page" data-shb-heading="AP.editor.setPage(pageNumber)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setPage(pageNumber)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-project-target-languages" data-shb-heading="AP.editor.getProjectTargetLanguages(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getProjectTargetLanguages(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-target-language" data-shb-heading="AP.editor.setTargetLanguage(languageIdOrIds, callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setTargetLanguage(languageIdOrIds, callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-croql-filter" data-shb-heading="AP.editor.getCroqlFilter(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getCroqlFilter(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-croql-filter" data-shb-heading="AP.editor.setCroqlFilter(croql)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setCroqlFilter(croql)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#reset-croql-filter" data-shb-heading="AP.editor.resetCroqlFilter()" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.resetCroqlFilter()</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#search" data-shb-heading="AP.editor.search(text, options)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.search(text, options)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-workflow-step-status-filter" data-shb-heading="AP.editor.setWorkflowStepStatusFilter(status)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setWorkflowStepStatusFilter(status)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-workflow-step-status-filter" data-shb-heading="AP.editor.getWorkflowStepStatusFilter(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getWorkflowStepStatusFilter(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-mode" data-shb-heading="AP.editor.getMode(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getMode(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-mode" data-shb-heading="AP.editor.setMode(mode)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setMode(mode)</span> </a> </li> </ul> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#event-module-actions" data-shb-heading="Event Module Actions" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Event Module Actions</span> </a> <ul class="isMobile astro-4elwmllm" style="--depth: 1;"> <li class="astro-4elwmllm" style="--depth: 1;"> <a href="#events-once" data-shb-heading="AP.events.once(event, callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.events.once(event, callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#events-on" data-shb-heading="AP.events.on(event, callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.events.on(event, callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#events-off" data-shb-heading="AP.events.off(event, callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.events.off(event, callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#events-off-all" data-shb-heading="AP.events.ofAll(event)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.events.ofAll(event)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#events-on-any" data-shb-heading="AP.events.onAny(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.events.onAny(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#events-off-any" data-shb-heading="AP.events.offAny(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.events.offAny(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#supported-events" data-shb-heading="Supported Events" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">Supported Events</span> </a> </li> </ul> </li> </ul> </div></details></nav></mobile-starlight-toc></div><div class="right-sidebar-panel sl-hidden lg:sl-block astro-pb3aqygn"><div class="sl-container astro-pb3aqygn"><starlight-toc data-min-h="2" data-max-h="4"><nav aria-labelledby="starlight__on-this-page"><h2 id="starlight__on-this-page">On this page</h2><ul class="astro-4elwmllm" style="--depth: 0;"> <li class="astro-4elwmllm" style="--depth: 0;"> <a href="#_top" data-shb-heading="Overview" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Overview</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#getting-started" data-shb-heading="Getting Started" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Getting Started</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#global-actions" data-shb-heading="Global Actions" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Global Actions</span> </a> <ul class="astro-4elwmllm" style="--depth: 1;"> <li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-context" data-shb-heading="AP.getContext(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.getContext(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-jwt-token" data-shb-heading="AP.getJwtToken(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.getJwtToken(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-theme" data-shb-heading="AP.getTheme()" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.getTheme()</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#redirect" data-shb-heading="AP.redirect(path)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.redirect(path)</span> </a> </li> </ul> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#editor-module-actions" data-shb-heading="Editor Module Actions" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Editor Module Actions</span> </a> <ul class="astro-4elwmllm" style="--depth: 1;"> <li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-string" data-shb-heading="AP.editor.getString(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getString(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-selected-strings" data-shb-heading="AP.editor.getSelectedStrings(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getSelectedStrings(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-translations" data-shb-heading="AP.editor.getTranslations(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getTranslations(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-top-translation" data-shb-heading="AP.editor.getTopTranslation(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getTopTranslation(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-translation" data-shb-heading="AP.editor.setTranslation(text)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setTranslation(text)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#append-translation" data-shb-heading="AP.editor.appendTranslation(text)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.appendTranslation(text)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#clear-translation" data-shb-heading="AP.editor.clearTranslation()" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.clearTranslation()</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-focus" data-shb-heading="AP.editor.setFocus()" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setFocus()</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#notice-message" data-shb-heading="AP.editor.noticeMessage(message)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.noticeMessage(message)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#success-message" data-shb-heading="AP.editor.successMessage(message)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.successMessage(message)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#error-message" data-shb-heading="AP.editor.errorMessage(message)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.errorMessage(message)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-application-notification" data-shb-heading="AP.editor.setApplicationNotification(1)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setApplicationNotification(1)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#clear-application-notification" data-shb-heading="AP.editor.clearApplicationNotification()" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.clearApplicationNotification()</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-custom-filter" data-shb-heading="AP.editor.getCustomFilter(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getCustomFilter(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-custom-filter" data-shb-heading="AP.editor.setCustomFilter(customFilter)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setCustomFilter(customFilter)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#reset-custom-filter" data-shb-heading="AP.editor.resetCustomFilter()" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.resetCustomFilter()</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-filter" data-shb-heading="AP.editor.getFilter(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getFilter(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-filter" data-shb-heading="AP.editor.setFilter(filterNumber)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setFilter(filterNumber)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-filters-list" data-shb-heading="AP.editor.getFiltersList(filters)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getFiltersList(filters)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-page" data-shb-heading="AP.editor.getPage(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getPage(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-page" data-shb-heading="AP.editor.setPage(pageNumber)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setPage(pageNumber)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-project-target-languages" data-shb-heading="AP.editor.getProjectTargetLanguages(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getProjectTargetLanguages(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-target-language" data-shb-heading="AP.editor.setTargetLanguage(languageIdOrIds, callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setTargetLanguage(languageIdOrIds, callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-croql-filter" data-shb-heading="AP.editor.getCroqlFilter(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getCroqlFilter(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-croql-filter" data-shb-heading="AP.editor.setCroqlFilter(croql)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setCroqlFilter(croql)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#reset-croql-filter" data-shb-heading="AP.editor.resetCroqlFilter()" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.resetCroqlFilter()</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#search" data-shb-heading="AP.editor.search(text, options)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.search(text, options)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-workflow-step-status-filter" data-shb-heading="AP.editor.setWorkflowStepStatusFilter(status)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setWorkflowStepStatusFilter(status)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-workflow-step-status-filter" data-shb-heading="AP.editor.getWorkflowStepStatusFilter(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getWorkflowStepStatusFilter(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#get-mode" data-shb-heading="AP.editor.getMode(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.getMode(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#set-mode" data-shb-heading="AP.editor.setMode(mode)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.editor.setMode(mode)</span> </a> </li> </ul> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#event-module-actions" data-shb-heading="Event Module Actions" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Event Module Actions</span> </a> <ul class="astro-4elwmllm" style="--depth: 1;"> <li class="astro-4elwmllm" style="--depth: 1;"> <a href="#events-once" data-shb-heading="AP.events.once(event, callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.events.once(event, callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#events-on" data-shb-heading="AP.events.on(event, callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.events.on(event, callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#events-off" data-shb-heading="AP.events.off(event, callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.events.off(event, callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#events-off-all" data-shb-heading="AP.events.ofAll(event)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.events.ofAll(event)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#events-on-any" data-shb-heading="AP.events.onAny(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.events.onAny(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#events-off-any" data-shb-heading="AP.events.offAny(callback)" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">AP.events.offAny(callback)</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#supported-events" data-shb-heading="Supported Events" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">Supported Events</span> </a> </li> </ul> </li> </ul> </nav></starlight-toc></div></div> </div> </aside> <div class="main-pane astro-67yu43on"> <main data-pagefind-body lang="en" dir="ltr" class="astro-bguv2lll"> <div class="content-panel astro-7nkwcw3z"> <div class="sl-container astro-7nkwcw3z"> <h1 id="_top" class="astro-j6tvhyss">Crowdin Apps JS</h1> </div> </div> <div class="content-panel astro-7nkwcw3z"> <div class="sl-container astro-7nkwcw3z"> <div class="sl-markdown-content"> <p>The Crowdin Apps JS is a library built for easier interaction with Crowdin. Since the integration uses the iframes, there are certain limitations on the interaction between windows: environments are encapsulated and do not have access to the page content, code, styles, and any other information related to the page.</p> <p>The Crowdin Apps JS library is based on cross-window messaging technology and uses <em>postMessage()</em> to interact between multiple windows.</p> <h2 id="getting-started"><a href="#getting-started">Getting Started</a></h2> <p>To use this library, connect it on the module page by inserting the following code into the page header:</p> <div class="expressive-code"><link rel="stylesheet" href="/_astro/ec.1su9a.css"><script type="module" src="/_astro/ec.8zarh.js"></script><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="html"><code><div class="ec-line"><div class="code"><span style="--1:#8D46B4"><span style="--0:#7FDBCA">&#x3C;</span><span style="--0:#CAECE6">script</span><span style="--0:#7FDBCA"> </span></span><span style="--0:#C5E478;--1:#3C63B3">src</span><span style="--0:#7FDBCA;--1:#8D46B4">=</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">https://cdn.crowdin.com/apps/dist/iframe.js</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--1:#8D46B4"><span style="--0:#7FDBCA">>&#x3C;/</span><span style="--0:#CAECE6">script</span><span style="--0:#7FDBCA">></span></span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="<script src=&#x22;https://cdn.crowdin.com/apps/dist/iframe.js&#x22;></script>"><div></div></button></div></figure></div> <p>After adding the code mentioned above, you’ll be able to use the global AP variable.</p> <aside aria-label="Caution" class="starlight-aside starlight-aside--caution"> <p class="starlight-aside__title" aria-hidden="true"> <svg aria-hidden="true" class="starlight-aside__icon astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M12 16a1 1 0 1 0 0 2 1 1 0 0 0 0-2Zm10.67 1.47-8.05-14a3 3 0 0 0-5.24 0l-8 14A3 3 0 0 0 3.94 22h16.12a3 3 0 0 0 2.61-4.53Zm-1.73 2a1 1 0 0 1-.88.51H3.94a1 1 0 0 1-.88-.51 1 1 0 0 1 0-1l8-14a1 1 0 0 1 1.78 0l8.05 14a1 1 0 0 1 .05 1.02v-.02ZM12 8a1 1 0 0 0-1 1v4a1 1 0 0 0 2 0V9a1 1 0 0 0-1-1Z"/></svg> Caution </p> <section class="starlight-aside__content"> <p>Don’t download the <code dir="auto">iframe.js</code> file and serve it up from your app server directly. The <code dir="auto">iframe.js</code> file must be served up by Crowdin for establishing of the cross-domain messaging bridge. The <code dir="auto">iframe.js</code> file is only intended for use in an iframe inside Crowdin and does not work for standalone web pages.</p> </section> </aside> <h2 id="global-actions"><a href="#global-actions">Global Actions</a></h2> <p>Global actions are the actions that are available on all module pages.</p> <h3 id="get-context"><a href="#get-context">AP.getContext(callback)</a></h3> <p>The method retrieves the context information about the current page and puts it into the callback. For example, the project ID where the module is opened or the locale used on the page.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">getContext</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">contextData</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Object: context</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#7690A6;--1:#4F687D">,</span><span style="--1:#403F53"><span style="--0:#D6DEEB"> </span><span style="--0:#D7DBE0">contextData</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.getContext(function(contextData) { console.log(&#x22;Object: context&#x22;, contextData);});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the response object.</p></td></tr></tbody></table> <p>Depending on the current page on which this method is used, the payload may contain a different set of the context information.</p> <p>Payload example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="json"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"project_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">12</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"organization_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">200000000</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"editor"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"mode"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">translate</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"theme"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">dark</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"source_language_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">en</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"target_language_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">fr</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"file"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">12345</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"fileData"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><details class="ec-section"><summary><div class="ec-line" style="--ecIndent:6ch"><div class="code"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" viewBox="0 0 16 16" width="16" height="16"><path d="m8.177.677 2.896 2.896a.25.25 0 0 1-.177.427H8.75v1.25a.75.75 0 0 1-1.5 0V4H5.104a.25.25 0 0 1-.177-.427L7.823.677a.25.25 0 0 1 .354 0ZM7.25 10.75a.75.75 0 0 1 1.5 0V12h2.146a.25.25 0 0 1 .177.427l-2.896 2.896a.25.25 0 0 1-.354 0l-2.896-2.896A.25.25 0 0 1 5.104 12H7.25v-1.25Zm-5-2a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM6 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 6 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM12 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 12 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5Z"></path></svg>35 collapsed lines</div></div></summary><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">12345</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"is_plain_text"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#FF5874;--1:#A54A4A">true</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"type"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">android8</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"status"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">1</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"parent_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">0</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"node_type"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">1</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"created"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">2024-10-17 00:41:39</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"extension"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">xml</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"priority"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">1</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"name"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">test.xml</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"upload_ready"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">1</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"export_ready"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">1</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"export_xliff_ready"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">1</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"can_change"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">1</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"plural_support"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">1</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"excluded_languages"</span><span style="--0:#D6DEEB;--1:#403F53">: [],</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"html_preview"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"identifier_required"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">1</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"total"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">45</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"translated"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"approved"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"preTranslated"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"translated_percent"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"approved_percent"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"progress"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"total"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">45</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"translated"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"approved"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"translated_percent"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"approved_percent"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"pre_translated"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"file_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">12345</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"language_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">52</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"translation_link"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">/editor/ubrella/12345/en-uk</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div></details><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">},</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"workflow_step"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">7777</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"title"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">Translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"type"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">Translate</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="{ &#x22;project_id&#x22;: &#x22;12&#x22;, &#x22;organization_id&#x22;: &#x22;200000000&#x22;, &#x22;editor&#x22;: { &#x22;mode&#x22;: &#x22;translate&#x22;, &#x22;theme&#x22;: &#x22;dark&#x22;, &#x22;source_language_id&#x22;: &#x22;en&#x22;, &#x22;target_language_id&#x22;: &#x22;fr&#x22;, &#x22;file&#x22;: 12345, &#x22;fileData&#x22;: { &#x22;id&#x22;: &#x22;12345&#x22;, &#x22;is_plain_text&#x22;: true, &#x22;type&#x22;: &#x22;android8&#x22;, &#x22;status&#x22;: &#x22;1&#x22;, &#x22;parent_id&#x22;: &#x22;0&#x22;, &#x22;node_type&#x22;: &#x22;1&#x22;, &#x22;created&#x22;: &#x22;2024-10-17 00:41:39&#x22;, &#x22;extension&#x22;: &#x22;xml&#x22;, &#x22;priority&#x22;: &#x22;1&#x22;, &#x22;name&#x22;: &#x22;test.xml&#x22;, &#x22;upload_ready&#x22;: 1, &#x22;export_ready&#x22;: 1, &#x22;export_xliff_ready&#x22;: 1, &#x22;can_change&#x22;: 1, &#x22;plural_support&#x22;: 1, &#x22;excluded_languages&#x22;: [], &#x22;html_preview&#x22;: 0, &#x22;identifier_required&#x22;: 1, &#x22;total&#x22;: 45, &#x22;translated&#x22;: 0, &#x22;approved&#x22;: 0, &#x22;preTranslated&#x22;: 0, &#x22;translated_percent&#x22;: 0, &#x22;approved_percent&#x22;: 0, &#x22;progress&#x22;: { &#x22;total&#x22;: 45, &#x22;translated&#x22;: 0, &#x22;approved&#x22;: 0, &#x22;translated_percent&#x22;: 0, &#x22;approved_percent&#x22;: 0, &#x22;pre_translated&#x22;: 0, &#x22;file_id&#x22;: 12345, &#x22;language_id&#x22;: 52, &#x22;translation_link&#x22;: &#x22;/editor/ubrella/12345/en-uk&#x22; } }, &#x22;workflow_step&#x22;: { &#x22;id&#x22;: 7777, &#x22;title&#x22;: &#x22;Translation&#x22;, &#x22;type&#x22;: &#x22;Translate&#x22; } }}"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>project_id</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The identifier of the Crowdin project.</p></td></tr><tr><td><code>organization_id</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> Crowdin Enterprise only. The identifier of the organization in Crowdin Enterprise.</p></td></tr><tr><td><code>editor</code></td><td><p><strong>Type:</strong> <code>object</code></p><p><strong>Description:</strong> Contains settings and context for the Editor.</p></td></tr><tr><td><code>editor.mode</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> Active mode of the Editor.</p></td></tr><tr><td><code>editor.theme</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> Active theme of the Editor.</p></td></tr><tr><td><code class="whitespace-nowrap">editor.source_language_id</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The identifier of the source language.</p></td></tr><tr><td><code>editor.target_language_id</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The identifier of the target language.</p></td></tr><tr><td><code>editor.file</code></td><td><p><strong>Type:</strong> <code>integer</code></p><p><strong>Description:</strong> The numeric identifier of a file in the Crowdin project that is open in the Editor.</p></td></tr><tr><td><code>editor.fileData</code></td><td><p><strong>Type:</strong> <code>object</code></p><p><strong>Description:</strong> Contains data related to a file in the Crowdin project that is open in the Editor.</p></td></tr><tr><td><code>editor.workflow_step</code></td><td><p><strong>Type:</strong> <code>object</code></p><p><strong>Description:</strong> Crowdin Enterprise only. Details of the current workflow step in the Editor.</p></td></tr><tr><td><code>editor.workflow_step.id</code></td><td><p><strong>Type:</strong> <code>integer</code></p><p><strong>Description:</strong> The numeric identifier of the workflow step.</p></td></tr><tr><td><code class="whitespace-nowrap">editor.workflow_step.title</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> Title of the workflow step.</p></td></tr><tr><td><code>editor.workflow_step.type</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> Type of the workflow step.</p></td></tr></tbody></table> <h3 id="get-jwt-token"><a href="#get-jwt-token">AP.getJwtToken(callback)</a></h3> <p>The method retrieves a JWT token string. Used to get a current token. If the previous token has a validity period of less than one minute, the method will generate and return a new token.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">getJwtToken</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">jwtToken</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">String: JWT token</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#7690A6;--1:#4F687D">,</span><span style="--1:#403F53"><span style="--0:#D6DEEB"> </span><span style="--0:#D7DBE0">jwtToken</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.getJwtToken(function(jwtToken) { console.log(&#x22;String: JWT token&#x22;, jwtToken);});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the response string.</p></td></tr></tbody></table> <h3 id="get-theme"><a href="#get-theme">AP.getTheme()</a></h3> <p>The method retrieves information about the currently selected theme.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">getTheme</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">theme</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--1:#403F53"> </span></span><span style="--0:#D7DBE0;--1:#403F53">light</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#C792EA;--1:#8D46B4">|</span><span style="--1:#403F53"><span style="--0:#D6DEEB"> </span><span style="--0:#D7DBE0">dark</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.getTheme(function(theme) { light | dark});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the response string.</p></td></tr></tbody></table> <h3 id="redirect"><a href="#redirect">AP.redirect(path)</a></h3> <p>The method redirects the user to a specified path within the application.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">redirect</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#ECC48D;--1:#9B504E">/profile</span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#D6DEEB;--1:#403F53">);</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.redirect(&#x27;/profile&#x27;);"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>path</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The relative path to which the user will be redirected.</p></td></tr></tbody></table> <h2 id="editor-module-actions"><a href="#editor-module-actions">Editor Module Actions</a></h2> <p>Editor module actions provide a possibility to get information from the Editor UI. These actions are available only on pages that are loaded in an iframe in the Editor-panels module.</p> <h3 id="get-string"><a href="#get-string">AP.editor.getString(callback)</a></h3> <p>The method retrieves information about the active string currently highlighted in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">getString</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">stringData</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Object: source string</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#7690A6;--1:#4F687D">,</span><span style="--1:#403F53"><span style="--0:#D6DEEB"> </span><span style="--0:#D7DBE0">stringData</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.getString(function(stringData) { console.log(&#x22;Object: source string&#x22;, stringData);});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the response object.</p></td></tr></tbody></table> <h3 id="get-selected-strings"><a href="#get-selected-strings">AP.editor.getSelectedStrings(callback)</a></h3> <p>This method retrieves information about the currently selected strings in the Editor, along with their translations for the currently selected language.</p> <aside aria-label="Note" class="starlight-aside starlight-aside--note"> <p class="starlight-aside__title" aria-hidden="true"> <svg aria-hidden="true" class="starlight-aside__icon astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M12 11a1 1 0 0 0-1 1v4a1 1 0 0 0 2 0v-4a1 1 0 0 0-1-1Zm.38-3.92a1 1 0 0 0-.76 0 1 1 0 0 0-.33.21 1.15 1.15 0 0 0-.21.33 1 1 0 0 0 .21 1.09c.097.088.209.16.33.21A1 1 0 0 0 13 8a1.05 1.05 0 0 0-.29-.71 1 1 0 0 0-.33-.21ZM12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Zm0 18a8 8 0 1 1 0-16.001A8 8 0 0 1 12 20Z"/></svg> Note </p> <section class="starlight-aside__content"> <p>This method is only available for Side-by-side and Multilingual Editor views.</p> </section> </aside> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">getSelectedStrings</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">stringData</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Array: objects with source string and translations for selected languages</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#7690A6;--1:#4F687D">,</span><span style="--1:#403F53"><span style="--0:#D6DEEB"> </span><span style="--0:#D7DBE0">stringData</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">})</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.getSelectedStrings(function(stringData) { console.log(&#x22;Array: objects with source string and translations for selected languages&#x22;, stringData);})"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the response object.</p></td></tr></tbody></table> <h3 id="get-translations"><a href="#get-translations">AP.editor.getTranslations(callback)</a></h3> <p>The method retrieves a list of translations suggested to the currently selected string in the Editor. Additionally, the response contains information about the translation author, the number of votes, and approval on the current workflow step.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">getTranslations</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">translationsData</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Array: translation objects</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#7690A6;--1:#4F687D">,</span><span style="--1:#403F53"><span style="--0:#D6DEEB"> </span><span style="--0:#D7DBE0">translationsData</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.getTranslations(function(translationsData) { console.log(&#x22;Array: translation objects&#x22;, translationsData);});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the response array.</p></td></tr></tbody></table> <h3 id="get-top-translation"><a href="#get-top-translation">AP.editor.getTopTranslation(callback)</a></h3> <p>The method retrieves a top translation (the translation with the highest priority) for the currently selected source string in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">getTopTranslation</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">topTranslationData</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Object: top translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#7690A6;--1:#4F687D">,</span><span style="--1:#403F53"><span style="--0:#D6DEEB"> </span><span style="--0:#D7DBE0">topTranslationData</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.getTopTranslation(function(topTranslationData) { console.log(&#x22;Object: top translation&#x22;, topTranslationData);});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the response object.</p></td></tr></tbody></table> <h3 id="set-translation"><a href="#set-translation">AP.editor.setTranslation(text)</a></h3> <p>The method sets the translation text for the currently selected source string in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">setTranslation</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Hello,</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">);</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.setTranslation(&#x22;Hello,&#x22;);"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>text</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The translation text that is being set for the currently selected source string.</p></td></tr></tbody></table> <h3 id="append-translation"><a href="#append-translation">AP.editor.appendTranslation(text)</a></h3> <p>The method appends the translation text next to the cursor for the currently selected source string in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">appendTranslation</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E"> {user},</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">);</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.appendTranslation(&#x22; {user},&#x22;);"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code class="whitespace-nowrap">text</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The translation text that is being appended next to the cursor for the currently selected source string.</p></td></tr></tbody></table> <h3 id="clear-translation"><a href="#clear-translation">AP.editor.clearTranslation()</a></h3> <p>The method clears the translation text for the currently selected source string in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">clearTranslation</span><span style="--0:#D6DEEB;--1:#403F53">();</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.clearTranslation();"><div></div></button></div></figure></div> <h3 id="set-focus"><a href="#set-focus">AP.editor.setFocus()</a></h3> <p>The method sets focus on the translation field in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">setFocus</span><span style="--0:#D6DEEB;--1:#403F53">();</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.setFocus();"><div></div></button></div></figure></div> <h3 id="notice-message"><a href="#notice-message">AP.editor.noticeMessage(message)</a></h3> <p>The method displays the notice message text in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">noticeMessage</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Message text</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">);</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.noticeMessage(&#x22;Message text&#x22;);"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>text</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The notice message text that is being displayed.</p></td></tr></tbody></table> <h3 id="success-message"><a href="#success-message">AP.editor.successMessage(message)</a></h3> <p>The method displays the success message text in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">successMessage</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Message text</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">);</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.successMessage(&#x22;Message text&#x22;);"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>text</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The success message text that is being displayed.</p></td></tr></tbody></table> <h3 id="error-message"><a href="#error-message">AP.editor.errorMessage(message)</a></h3> <p>The method displays the error message text in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">errorMessage</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Message text</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">);</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.errorMessage(&#x22;Message text&#x22;);"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>text</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The error message text that is being displayed.</p></td></tr></tbody></table> <h3 id="set-application-notification"><a href="#set-application-notification">AP.editor.setApplicationNotification(1)</a></h3> <p>The method sets a notification count next to an app icon in the right panel in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">setApplicationNotification</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#F78C6C;--1:#AA0982">1</span><span style="--0:#D6DEEB;--1:#403F53">);</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.setApplicationNotification(1);"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>count</code></td><td><p><strong>Type:</strong> <code>integer</code></p><p><strong>Description:</strong> The notification count number.</p></td></tr></tbody></table> <h3 id="clear-application-notification"><a href="#clear-application-notification">AP.editor.clearApplicationNotification()</a></h3> <p>The method clears a notification count next to an app icon in the right panel in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">clearApplicationNotification</span><span style="--0:#D6DEEB;--1:#403F53">();</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.clearApplicationNotification();"><div></div></button></div></figure></div> <h3 id="get-custom-filter"><a href="#get-custom-filter">AP.editor.getCustomFilter(callback)</a></h3> <p>The method retrieves the current Advanced filter applied in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">getCustomFilter</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">customFilter</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--1:#403F53"><span style="--0:#D6DEEB">(</span><span style="--0:#D7DBE0">customFilter</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.getCustomFilter(function(customFilter) { console.log(customFilter);});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the custom filter object.</p></td></tr></tbody></table> <h3 id="set-custom-filter"><a href="#set-custom-filter">AP.editor.setCustomFilter(customFilter)</a></h3> <p>The method sets a Advanced filter in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">setCustomFilter</span><span style="--0:#D6DEEB;--1:#403F53">({</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#809191;--1:#5E6578">//filter object</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.setCustomFilter({ //filter object});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>customFilter</code></td><td><p><strong>Type:</strong> <code>object</code></p><p><strong>Description:</strong> The custom filter object to be applied.</p></td></tr></tbody></table> <h3 id="reset-custom-filter"><a href="#reset-custom-filter">AP.editor.resetCustomFilter()</a></h3> <p>The method resets the Advanced filter to the default state.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">resetCustomFilter</span><span style="--0:#D6DEEB;--1:#403F53">();</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.resetCustomFilter();"><div></div></button></div></figure></div> <h3 id="get-filter"><a href="#get-filter">AP.editor.getFilter(callback)</a></h3> <p>The method retrieves the current filter applied in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">getFilter</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">filter</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--1:#403F53"><span style="--0:#D6DEEB">(</span><span style="--0:#D7DBE0">filter</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.getFilter(function(filter) { console.log(filter);});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the filter ID.</p></td></tr></tbody></table> <h3 id="set-filter"><a href="#set-filter">AP.editor.setFilter(filterNumber)</a></h3> <p>The method sets a filter in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">setFilter</span><span style="--1:#403F53"><span style="--0:#D6DEEB">(</span><span style="--0:#D7DBE0">filterNumber</span><span style="--0:#D6DEEB">);</span></span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.setFilter(filterNumber);"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>filterNumber</code></td><td><p><strong>Type:</strong> <code>integer</code></p><p><strong>Description:</strong> The filter ID to be applied.</p></td></tr></tbody></table> <p><strong>Filter Option IDs:</strong></p> <ul> <li>All, Untranslated First – 0</li> <li>Untranslated – 2</li> <li>Show All – 3</li> <li>Approved – 4</li> <li>Translated, Not Approved – 5</li> <li>Hidden – 6</li> <li>With Comments – 7</li> <li>Unsaved translations – 39</li> <li>Translated by TM – 30</li> <li>Translated by MT – 31</li> <li>Translated by TM or MT – 10</li> <li>Advanced Filter – 12</li> <li>With unresolved issues (All languages) – 13</li> <li>Need to be voted – 15</li> <li>Without comments – 16</li> <li>With unresolved issues (Current language) – 17</li> <li>QA Issues (All) – 18</li> <li>QA Issues (Empty translation) – 19</li> <li>QA Issues (Variables mismatch) – 20</li> <li>QA Issues (Tags mismatch) – 21</li> <li>QA Issues (Punctuation mismatch) – 22</li> <li>QA Issues (Character case mismatch) – 23</li> <li>QA Issues (Spaces mismatch) – 24</li> <li>QA Issues (Length issues) – 25</li> <li>QA Issues (Special character mismatch) – 26</li> <li>QA Issues (“Incorrect translation” issues) – 27</li> <li>QA Issues (Spelling) – 28</li> <li>QA Issues (ICU syntax) – 29</li> <li>QA Issues (Consistent terminology) – 32</li> <li>QA Issues (Without QA issues) – 33</li> <li>QA Issues (Duplicate translation) – 35</li> <li>QA Issues (FTL syntax) – 36</li> <li>QA Issues (Android syntax) – 37</li> </ul> <aside aria-label="Caution" class="starlight-aside starlight-aside--caution"> <p class="starlight-aside__title" aria-hidden="true"> <svg aria-hidden="true" class="starlight-aside__icon astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M12 16a1 1 0 1 0 0 2 1 1 0 0 0 0-2Zm10.67 1.47-8.05-14a3 3 0 0 0-5.24 0l-8 14A3 3 0 0 0 3.94 22h16.12a3 3 0 0 0 2.61-4.53Zm-1.73 2a1 1 0 0 1-.88.51H3.94a1 1 0 0 1-.88-.51 1 1 0 0 1 0-1l8-14a1 1 0 0 1 1.78 0l8.05 14a1 1 0 0 1 .05 1.02v-.02ZM12 8a1 1 0 0 0-1 1v4a1 1 0 0 0 2 0V9a1 1 0 0 0-1-1Z"/></svg> Caution </p> <section class="starlight-aside__content"> <p>The following list may not include some custom filter options added using the Crowdin Apps. To get the full list of available filter options, use the <a href="#get-filters-list"><code dir="auto">AP.editor.getFiltersList(filters)</code></a> method.</p> </section> </aside> <h3 id="get-filters-list"><a href="#get-filters-list">AP.editor.getFiltersList(filters)</a></h3> <p>The method retrieves the list of available filter options in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">getFiltersList</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">filters</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--1:#403F53"><span style="--0:#D6DEEB">(</span><span style="--0:#D7DBE0">filters</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.getFiltersList(function(filters) { console.log(filters);});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the filters object.</p></td></tr></tbody></table> <h3 id="get-page"><a href="#get-page">AP.editor.getPage(callback)</a></h3> <p>The method retrieves the current page number in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">getPage</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">page</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--1:#403F53"><span style="--0:#D6DEEB">(</span><span style="--0:#D7DBE0">page</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.getPage(function(page) { console.log(page);});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the page number.</p></td></tr></tbody></table> <h3 id="set-page"><a href="#set-page">AP.editor.setPage(pageNumber)</a></h3> <p>The method sets a page number in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">setPage</span><span style="--1:#403F53"><span style="--0:#D6DEEB">(</span><span style="--0:#D7DBE0">pageNumber</span><span style="--0:#D6DEEB">);</span></span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.setPage(pageNumber);"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>pageNumber</code></td><td><p><strong>Type:</strong> <code>integer</code></p><p><strong>Description:</strong> The page number to be set.</p></td></tr></tbody></table> <h3 id="get-project-target-languages"><a href="#get-project-target-languages">AP.editor.getProjectTargetLanguages(callback)</a></h3> <p>The method retrieves the target languages for the current project.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">getProjectTargetLanguages</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">languages</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--1:#403F53"><span style="--0:#D6DEEB">(</span><span style="--0:#D7DBE0">languages</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.getProjectTargetLanguages(function(languages) { console.log(languages);});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the target languages array.</p></td></tr></tbody></table> <h3 id="set-target-language"><a href="#set-target-language">AP.editor.setTargetLanguage(languageIdOrIds, callback)</a></h3> <p>The method sets the target language(s) in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">setTargetLanguage</span><span style="--1:#403F53"><span style="--0:#D6DEEB">(</span><span style="--0:#D7DBE0">languageId</span><span style="--0:#D6DEEB"> </span></span><span style="--0:#C792EA;--1:#8D46B4">|</span><span style="--1:#403F53"><span style="--0:#D6DEEB"> </span><span style="--0:#D7DBE0">languageIds</span><span style="--0:#D6DEEB">, </span></span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">res</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--1:#403F53"><span style="--0:#D6DEEB">(</span><span style="--0:#D7DBE0">res</span><span style="--0:#D6DEEB">)</span></span><span style="--0:#809191;--1:#5E6578">// response message</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.setTargetLanguage(languageId | languageIds, function(res) { console.log(res)// response message});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>languageIdOrIds</code></td><td><p><strong>Type:</strong> <code>string | array</code></p><p><strong>Description:</strong> The ID or array of IDs of the target languages to be set.</p></td></tr><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the response.</p></td></tr></tbody></table> <h3 id="get-croql-filter"><a href="#get-croql-filter">AP.editor.getCroqlFilter(callback)</a></h3> <p>The method retrieves the current CroQL filter applied in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">getCroqlFilter</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">croql</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--1:#403F53"><span style="--0:#D6DEEB">(</span><span style="--0:#D7DBE0">croql</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.getCroqlFilter(function(croql) { console.log(croql);});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the CroQL.</p></td></tr></tbody></table> <h3 id="set-croql-filter"><a href="#set-croql-filter">AP.editor.setCroqlFilter(croql)</a></h3> <p>The method sets a CroQL filter in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">setCroqlFilter</span><span style="--1:#403F53"><span style="--0:#D6DEEB">(</span><span style="--0:#D7DBE0">croql</span><span style="--0:#D6DEEB">);</span></span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.setCroqlFilter(croql);"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>croql</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The CroQL filter to be applied.</p></td></tr></tbody></table> <h3 id="reset-croql-filter"><a href="#reset-croql-filter">AP.editor.resetCroqlFilter()</a></h3> <p>The method resets the CroQL filter to the default state.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">resetCroqlFilter</span><span style="--0:#D6DEEB;--1:#403F53">();</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.resetCroqlFilter();"><div></div></button></div></figure></div> <h3 id="search"><a href="#search">AP.editor.search(text, options)</a></h3> <p>The method performs a search within the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">search</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#ECC48D;--1:#9B504E">text</span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#D6DEEB;--1:#403F53">, {</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">searchStrict: </span><span style="--0:#FF5874;--1:#A54A4A">false</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">searchFullMatch: </span><span style="--0:#FF5874;--1:#A54A4A">false</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">caseSensitive: </span><span style="--0:#FF5874;--1:#A54A4A">false</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">search_option: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#809191;--1:#5E6578">// 1 - Strings, 2 - Context, 3 - Translations, 4 - Identifier (Key), 0 - Everything</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.search(&#x27;text&#x27;, { searchStrict: false, searchFullMatch: false, caseSensitive: false, search_option: 0 // 1 - Strings, 2 - Context, 3 - Translations, 4 - Identifier (Key), 0 - Everything});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>text</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The search text.</p></td></tr><tr><td><code>options</code></td><td><p><strong>Type:</strong> <code>object</code></p><p><strong>Description:</strong> The search options.</p></td></tr></tbody></table> <h3 id="set-workflow-step-status-filter"><a href="#set-workflow-step-status-filter">AP.editor.setWorkflowStepStatusFilter(status)</a></h3> <p>The method sets a workflow step status filter in the Editor (Crowdin Enterprise only).</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">setWorkflowStepStatusFilter</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#ECC48D;--1:#9B504E">ALL</span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#C792EA;--1:#8D46B4">|</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#ECC48D;--1:#9B504E">TODO</span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#C792EA;--1:#8D46B4">|</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#ECC48D;--1:#9B504E">DONE</span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#C792EA;--1:#8D46B4">|</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#ECC48D;--1:#9B504E">INCOMPLETE</span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#D6DEEB;--1:#403F53">);</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.setWorkflowStepStatusFilter(&#x27;ALL&#x27; | &#x27;TODO&#x27; | &#x27;DONE&#x27; | &#x27;INCOMPLETE&#x27;);"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>status</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The workflow step status to be set.</p></td></tr></tbody></table> <h3 id="get-workflow-step-status-filter"><a href="#get-workflow-step-status-filter">AP.editor.getWorkflowStepStatusFilter(callback)</a></h3> <p>The method retrieves the current workflow step status filter applied in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">getWorkflowStepStatusFilter</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">step</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--1:#403F53"><span style="--0:#D6DEEB">(</span><span style="--0:#D7DBE0">step</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.getWorkflowStepStatusFilter(function(step) { console.log(step);});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the workflow step status filter.</p></td></tr></tbody></table> <h3 id="get-mode"><a href="#get-mode">AP.editor.getMode(callback)</a></h3> <p>The method retrieves the current mode of the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">getMode</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">mode</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--1:#403F53"><span style="--0:#D6DEEB">(</span><span style="--0:#D7DBE0">mode</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.getMode(function(mode) { console.log(mode);});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the current mode.</p></td></tr></tbody></table> <h3 id="set-mode"><a href="#set-mode">AP.editor.setMode(mode)</a></h3> <p>The method sets a mode in the Editor.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">editor</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">setMode</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#ECC48D;--1:#9B504E">translate</span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#C792EA;--1:#8D46B4">|</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#ECC48D;--1:#9B504E">proofread</span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#C792EA;--1:#8D46B4">|</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#ECC48D;--1:#9B504E">review</span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#C792EA;--1:#8D46B4">|</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#ECC48D;--1:#9B504E">multilingual</span><span style="--0:#D9F5DD;--1:#111111">'</span><span style="--0:#D6DEEB;--1:#403F53">);</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.editor.setMode(&#x27;translate&#x27; | &#x27;proofread&#x27; | &#x27;review&#x27; | &#x27;multilingual&#x27;);"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>mode</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The mode to be set.</p></td></tr></tbody></table> <h2 id="event-module-actions"><a href="#event-module-actions">Event Module Actions</a></h2> <p>Event module actions provide a possibility to work with events, enable the Crowdin app to respond to events that happen in Crowdin UI, and trigger its own events. Read more about <a href="#supported-events">supported events</a>.</p> <h3 id="events-once"><a href="#events-once">AP.events.once(event, callback)</a></h3> <p>The method subscribes a one-time listener to detect events with a specified name. The listener is unsubscribed as soon as the first event is processed.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">events</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">once</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">event</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">, </span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">eventData</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Event data</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#7690A6;--1:#4F687D">,</span><span style="--1:#403F53"><span style="--0:#D6DEEB"> </span><span style="--0:#D7DBE0">eventData</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.events.once(&#x22;event&#x22;, function(eventData) { console.log(&#x22;Event data&#x22;, eventData);});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>event</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The name of the event the callback of the function should react to.</p></td></tr><tr><td><code class="whitespace-nowrap">callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the event. Depending on the event’s type, there could be either one or a few arguments in the callback.</p></td></tr></tbody></table> <h3 id="events-on"><a href="#events-on">AP.events.on(event, callback)</a></h3> <p>The method subscribes a listener to all events with a specified name.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">events</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">on</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">event</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">, </span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">eventData</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Event data</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#7690A6;--1:#4F687D">,</span><span style="--1:#403F53"><span style="--0:#D6DEEB"> </span><span style="--0:#D7DBE0">eventData</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.events.on(&#x22;event&#x22;, function(eventData) { console.log(&#x22;Event data&#x22;, eventData);});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>event</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The name of the event the callback of the function should react to.</p></td></tr><tr><td><code class="whitespace-nowrap">callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that handles the event. Depending on the event’s type, there could be either one or a few arguments in the callback.</p></td></tr></tbody></table> <h3 id="events-off"><a href="#events-off">AP.events.off(event, callback)</a></h3> <p>The method unsubscribes a listener for an event with a specified name.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#82AAFF;--1:#3C63B3">callback</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--0:#D7DBE0;--1:#403F53">eventData</span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Event data</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#7690A6;--1:#4F687D">,</span><span style="--1:#403F53"><span style="--0:#D6DEEB"> </span><span style="--0:#D7DBE0">eventData</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">};</span></div></div><div class="ec-line"><div class="code"> </div></div><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">events</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">on</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">event</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--1:#403F53"><span style="--0:#D6DEEB">, </span><span style="--0:#D7DBE0">callback</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">events</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">off</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">event</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--1:#403F53"><span style="--0:#D6DEEB">, </span><span style="--0:#D7DBE0">callback</span><span style="--0:#D6DEEB">);</span></span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="function callback(eventData) { console.log(&#x22;Event data&#x22;, eventData);};AP.events.on(&#x22;event&#x22;, callback);AP.events.off(&#x22;event&#x22;, callback);"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>event</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The name of the event the callback of the function should be unsubscribed from.</p></td></tr><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that was previously subscribed to the event.</p></td></tr></tbody></table> <h3 id="events-off-all"><a href="#events-off-all">AP.events.ofAll(event)</a></h3> <p>The method unsubscribes all previously subscribed listeners from the specified event.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">events</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">offAll</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">event</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">);</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.events.offAll(&#x22;event&#x22;);"><div></div></button></div></figure></div> <table><tbody><tr><td><code>event</code></td><td><p><strong>Type:</strong> <code>string</code></p><p><strong>Description:</strong> The name of the event all listeners should be unsubscribed from.</p></td></tr></tbody></table> <h3 id="events-on-any"><a href="#events-on-any">AP.events.onAny(callback)</a></h3> <p>The method subscribes to all events from Crowdin UI.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">events</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">onAny</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--1:#403F53"><span style="--0:#D7DBE0">event</span><span style="--0:#D6DEEB">, </span><span style="--0:#D7DBE0">data</span></span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Event name string</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#7690A6;--1:#4F687D">,</span><span style="--1:#403F53"><span style="--0:#D6DEEB"> </span><span style="--0:#D7DBE0">event</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Event data</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#7690A6;--1:#4F687D">,</span><span style="--1:#403F53"><span style="--0:#D6DEEB"> </span><span style="--0:#D7DBE0">data</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">});</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="AP.events.onAny(function(event, data) { console.log(&#x22;Event name string&#x22;, event); console.log(&#x22;Event data&#x22;, data);});"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code class="whitespace-nowrap">callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that receives the name of the event and all the data transferred to the event.</p></td></tr></tbody></table> <h3 id="events-off-any"><a href="#events-off-any">AP.events.offAny(callback)</a></h3> <p>The method unsubscribes a listener from all events.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="js"><code><div class="ec-line"><div class="code"><span style="--0:#C792EA;--1:#8D46B4">function</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#82AAFF;--1:#3C63B3">callback</span><span style="--0:#D9F5DD;--1:#111111">(</span><span style="--1:#403F53"><span style="--0:#D7DBE0">event</span><span style="--0:#D6DEEB">, </span><span style="--0:#D7DBE0">data</span></span><span style="--0:#D9F5DD;--1:#111111">)</span><span style="--0:#D6DEEB;--1:#403F53"> {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Event name string</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#7690A6;--1:#4F687D">,</span><span style="--1:#403F53"><span style="--0:#D6DEEB"> </span><span style="--0:#D7DBE0">event</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">console</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">log</span><span style="--0:#D6DEEB;--1:#403F53">(</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Event data</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#7690A6;--1:#4F687D">,</span><span style="--1:#403F53"><span style="--0:#D6DEEB"> </span><span style="--0:#D7DBE0">data</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">};</span></div></div><div class="ec-line"><div class="code"> </div></div><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">events</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">onAny</span><span style="--1:#403F53"><span style="--0:#D6DEEB">(</span><span style="--0:#D7DBE0">callback</span><span style="--0:#D6DEEB">);</span></span></div></div><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">AP</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#FAF39F;--1:#111111">events</span><span style="--0:#C792EA;--1:#8D46B4">.</span><span style="--0:#82AAFF;--1:#3C63B3">offAny</span><span style="--1:#403F53"><span style="--0:#D6DEEB">(</span><span style="--0:#D7DBE0">callback</span><span style="--0:#D6DEEB">);</span></span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="function callback(event, data) { console.log(&#x22;Event name string&#x22;, event); console.log(&#x22;Event data&#x22;, data);};AP.events.onAny(callback);AP.events.offAny(callback);"><div></div></button></div></figure></div> <p>Properties:</p> <table><tbody><tr><td><code>callback</code></td><td><p><strong>Type:</strong> <code>function</code></p><p><strong>Description:</strong> The callback that was subscribed to all events.</p></td></tr></tbody></table> <h3 id="supported-events"><a href="#supported-events">Supported Events</a></h3> <p>Check out the list of supported events that could be passed to the Crowdin Apps JS library in the following table:</p> <table><colgroup><col width="30%"/><col width="70%"/></colgroup><thead><tr><th>Event</th><th>Details</th></tr></thead><tbody><tr><td><code>string.change</code></td><td><p>The event emitted when a user switches from one string to another. <br></p><div><div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="json"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">3939912</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"text"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">source string</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"context"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">string context</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"max_length"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">35</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"file"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">26588</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"name"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">file name.csv</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="{ &#x22;id&#x22;: 3939912, &#x22;text&#x22;: &#x22;source string&#x22;, &#x22;context&#x22;: &#x22;string context&#x22;, &#x22;max_length&#x22;: 35, &#x22;file&#x22;: { &#x22;id&#x22;: 26588, &#x22;name&#x22;: &#x22;file name.csv&#x22; }}"><div></div></button></div></figure></div></div></td></tr><tr><td><code>string.selected</code></td><td><p>The event emitted when a user selects strings.<br></p><div><div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="json"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"string"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">3939912</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"identifier"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">""</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"text"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">source string</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"context"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">string context</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"max_length"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"file"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">26588</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"name"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">file name.csv</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">},</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"translations"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"fr"</span><span style="--0:#D6DEEB;--1:#403F53">: [</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">14861530</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"string_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">3939912</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"text"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">chaîne source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"target_language_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">fr</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"approved"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#FF5874;--1:#A54A4A">false</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"author"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">1</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"login"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">user.login</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"name"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">User Name</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"avatar_url"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">https://avatar.com/avatar.png</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">},</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"created_at"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">2025-05-05T05:05:34-04:00</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">]</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="{ &#x22;string&#x22;: { &#x22;id&#x22;: 3939912, &#x22;identifier&#x22;: &#x22;&#x22;, &#x22;text&#x22;: &#x22;source string&#x22;, &#x22;context&#x22;: &#x22;string context&#x22;, &#x22;max_length&#x22;: 0, &#x22;file&#x22;: { &#x22;id&#x22;: 26588, &#x22;name&#x22;: &#x22;file name.csv&#x22; } }, &#x22;translations&#x22;: { &#x22;fr&#x22;: [ { &#x22;id&#x22;: 14861530, &#x22;string_id&#x22;: 3939912, &#x22;text&#x22;: &#x22;chaîne source&#x22;, &#x22;target_language_id&#x22;: &#x22;fr&#x22;, &#x22;approved&#x22;: false, &#x22;author&#x22;: { &#x22;id&#x22;: &#x22;1&#x22;, &#x22;login&#x22;: &#x22;user.login&#x22;, &#x22;name&#x22;: &#x22;User Name&#x22;, &#x22;avatar_url&#x22;: &#x22;https://avatar.com/avatar.png&#x22; }, &#x22;created_at&#x22;: &#x22;2025-05-05T05:05:34-04:00&#x22; } ] }}"><div></div></button></div></figure></div></div></td></tr><tr><td><code>textarea.edited</code></td><td><p>The event emitted when a user performs any changes in the translation field.<br></p><div><div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="json"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">3939912</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"text"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">source string</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"context"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">string context</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"max_length"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"file"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">26588</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"name"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">file name.csv</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">},</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"oldText"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">chaîne de caractères source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"newText"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">chaîne source</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="{ &#x22;id&#x22;: 3939912, &#x22;text&#x22;: &#x22;source string&#x22;, &#x22;context&#x22;: &#x22;string context&#x22;, &#x22;max_length&#x22;: 0, &#x22;file&#x22;: { &#x22;id&#x22;: 26588, &#x22;name&#x22;: &#x22;file name.csv&#x22; }, &#x22;oldText&#x22;: &#x22;chaîne de caractères source&#x22;, &#x22;newText&#x22;: &#x22;chaîne source&#x22;}"><div></div></button></div></figure></div></div></td></tr><tr><td><code>translation.added</code></td><td><p>The event emitted when a user saves a translation for the current string.<br></p><div><div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="json"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">422648</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"string_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">3939912</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"text"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">chaîne source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"target_language_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">fr</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"votes_rating"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"approved"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#FF5874;--1:#A54A4A">false</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"author"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">1</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"login"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">user.login</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"name"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">User Name</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"avatar_url"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">https://avatar.com/avatar.png</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">},</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"created_at"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">2022-12-09T12:17:37-05:00</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="{ &#x22;id&#x22;: 422648, &#x22;string_id&#x22;: 3939912, &#x22;text&#x22;: &#x22;chaîne source&#x22;, &#x22;target_language_id&#x22;: &#x22;fr&#x22;, &#x22;votes_rating&#x22;: 0, &#x22;approved&#x22;: false, &#x22;author&#x22;: { &#x22;id&#x22;: &#x22;1&#x22;, &#x22;login&#x22;: &#x22;user.login&#x22;, &#x22;name&#x22;: &#x22;User Name&#x22;, &#x22;avatar_url&#x22;: &#x22;https://avatar.com/avatar.png&#x22; }, &#x22;created_at&#x22;: &#x22;2022-12-09T12:17:37-05:00&#x22;}"><div></div></button></div></figure></div></div></td></tr><tr><td><code>translation.deleted</code></td><td><p>The event emitted when a user deletes a translation.<br></p><div><div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="json"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">422560</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"string_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">3939912</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="{ &#x22;id&#x22;: 422560, &#x22;string_id&#x22;: 3939912}"><div></div></button></div></figure></div></div></td></tr><tr><td><code>translation.restored</code></td><td><p>The event emitted when a user restores a deleted translation.<br></p><div><div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="json"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">422648</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"string_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">3939912</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"text"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">chaîne source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"target_language_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">fr</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"“votes_rating”"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"author"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">1</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"login"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">user.login</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"name"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">User Name</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"avatar_url"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">https://avatar.com/avatar.png</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">},</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"created_at"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">2022-12-09T12:17:37-05:00</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="{ &#x22;id&#x22;: 422648, &#x22;string_id&#x22;: 3939912, &#x22;text&#x22;: &#x22;chaîne source&#x22;, &#x22;target_language_id&#x22;: &#x22;fr&#x22;, &#x22;“votes_rating”&#x22;: 0, &#x22;author&#x22;: { &#x22;id&#x22;: &#x22;1&#x22;, &#x22;login&#x22;: &#x22;user.login&#x22;, &#x22;name&#x22;: &#x22;User Name&#x22;, &#x22;avatar_url&#x22;: &#x22;https://avatar.com/avatar.png&#x22; }, &#x22;created_at&#x22;: &#x22;2022-12-09T12:17:37-05:00&#x22;}"><div></div></button></div></figure></div></div></td></tr><tr><td><code>translation.vote</code></td><td><p>The event emitted when a user votes for a translation.<br></p><div><div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="json"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">422648</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"string_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">3939912</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"text"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">chaîne source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"target_language_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">fr</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"votes_rating"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">1</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"approved"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#FF5874;--1:#A54A4A">false</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"author"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">1</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"login"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">user.login</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"name"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">User Name</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"avatar_url"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">https://avatar.com/avatar.png</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">},</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"created_at"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">2022-12-09T12:17:37-05:00</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="{ &#x22;id&#x22;: 422648, &#x22;string_id&#x22;: 3939912, &#x22;text&#x22;: &#x22;chaîne source&#x22;, &#x22;target_language_id&#x22;: &#x22;fr&#x22;, &#x22;votes_rating&#x22;: 1, &#x22;approved&#x22;: false, &#x22;author&#x22;: { &#x22;id&#x22;: &#x22;1&#x22;, &#x22;login&#x22;: &#x22;user.login&#x22;, &#x22;name&#x22;: &#x22;User Name&#x22;, &#x22;avatar_url&#x22;: &#x22;https://avatar.com/avatar.png&#x22; }, &#x22;created_at&#x22;: &#x22;2022-12-09T12:17:37-05:00&#x22;}"><div></div></button></div></figure></div></div></td></tr><tr><td><code>translation.approve</code></td><td><p>The event emitted when a user approves a translation.<br></p><div><div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="json"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">422648</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"string_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">3939912</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"text"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">chaîne source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"target_language_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">fr</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"votes_rating"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"approved"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#FF5874;--1:#A54A4A">true</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"author"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">1</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"login"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">user.login</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"name"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">User Name</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"avatar_url"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">https://avatar.com/avatar.png</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">},</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"created_at"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">2022-12-09T12:17:37-05:00</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"approver"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">1</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"login"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">super.user</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"name"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">Super User</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"avatar_url"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">https://avatar.com/avatar.png</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">},</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"approved_at"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">2022-12-09T17:20:28.655Z</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="{ &#x22;id&#x22;: 422648, &#x22;string_id&#x22;: 3939912, &#x22;text&#x22;: &#x22;chaîne source&#x22;, &#x22;target_language_id&#x22;: &#x22;fr&#x22;, &#x22;votes_rating&#x22;: 0, &#x22;approved&#x22;: true, &#x22;author&#x22;: { &#x22;id&#x22;: &#x22;1&#x22;, &#x22;login&#x22;: &#x22;user.login&#x22;, &#x22;name&#x22;: &#x22;User Name&#x22;, &#x22;avatar_url&#x22;: &#x22;https://avatar.com/avatar.png&#x22; }, &#x22;created_at&#x22;: &#x22;2022-12-09T12:17:37-05:00&#x22;, &#x22;approver&#x22;: { &#x22;id&#x22;: &#x22;1&#x22;, &#x22;login&#x22;: &#x22;super.user&#x22;, &#x22;name&#x22;: &#x22;Super User&#x22;, &#x22;avatar_url&#x22;: &#x22;https://avatar.com/avatar.png&#x22; }, &#x22;approved_at&#x22;: &#x22;2022-12-09T17:20:28.655Z&#x22;}"><div></div></button></div></figure></div></div></td></tr><tr><td><code>translation.disapprove</code></td><td><p>The event emitted when a user removes a translation approval.<br></p><div><div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="json"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">422406</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"string_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">3939858</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"text"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">chaîne de caractères source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"target_language_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">fr</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"votes_rating"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"approved"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#FF5874;--1:#A54A4A">false</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"author"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">1</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"login"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">user.login</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"name"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">User Name</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"avatar_url"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">https://avatar.com/avatar.png</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">},</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"created_at"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">2022-12-08T12:29:07-05:00</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="{ &#x22;id&#x22;: 422406, &#x22;string_id&#x22;: 3939858, &#x22;text&#x22;: &#x22;chaîne de caractères source&#x22;, &#x22;target_language_id&#x22;: &#x22;fr&#x22;, &#x22;votes_rating&#x22;: 0, &#x22;approved&#x22;: false, &#x22;author&#x22;: { &#x22;id&#x22;: &#x22;1&#x22;, &#x22;login&#x22;: &#x22;user.login&#x22;, &#x22;name&#x22;: &#x22;User Name&#x22;, &#x22;avatar_url&#x22;: &#x22;https://avatar.com/avatar.png&#x22; }, &#x22;created_at&#x22;: &#x22;2022-12-08T12:29:07-05:00&#x22;}"><div></div></button></div></figure></div></div></td></tr><tr><td><code>language.change</code></td><td><p>The event emitted when a user changes a target language in the Editor.<br></p><div><div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="json"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"project_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">15</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"organization_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">200000000</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"editor"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"mode"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">translate</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"theme"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">dark;</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"source_language_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">en</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"target_language_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">fr</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"file"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">26588</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"workflow_step"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">77</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"title"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">Translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"type"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">Translate</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="{ &#x22;project_id&#x22;: &#x22;15&#x22;, &#x22;organization_id&#x22;: &#x22;200000000&#x22;, &#x22;editor&#x22;: { &#x22;mode&#x22;: &#x22;translate&#x22;, &#x22;theme&#x22;: &#x22;dark;&#x22;, &#x22;source_language_id&#x22;: &#x22;en&#x22;, &#x22;target_language_id&#x22;: &#x22;fr&#x22;, &#x22;file&#x22;: 26588, &#x22;workflow_step&#x22;: { &#x22;id&#x22;: 77, &#x22;title&#x22;: &#x22;Translation&#x22;, &#x22;type&#x22;: &#x22;Translate&#x22; } }}"><div></div></button></div></figure></div></div></td></tr><tr><td><code>file.change</code></td><td><p>The event emitted when a user changes a file in the Editor.<br></p><div><div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="json"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"project_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">15</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"organization_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">200000000</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"editor"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"mode"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">translate</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"theme"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">dark;</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"source_language_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">en</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"target_language_id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">fr</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"file"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">26574</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"workflow_step"</span><span style="--0:#D6DEEB;--1:#403F53">: {</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"id"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">77</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"title"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">Translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#7FDBCA;--1:#097174">"type"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#C789D6;--1:#7F5889">Translate</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div><div class="ec-line"><div class="code"><span class="indent"><span style="--0:#D6DEEB;--1:#403F53"> </span></span><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">}</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="{ &#x22;project_id&#x22;: &#x22;15&#x22;, &#x22;organization_id&#x22;: &#x22;200000000&#x22;, &#x22;editor&#x22;: { &#x22;mode&#x22;: &#x22;translate&#x22;, &#x22;theme&#x22;: &#x22;dark;&#x22;, &#x22;source_language_id&#x22;: &#x22;en&#x22;, &#x22;target_language_id&#x22;: &#x22;fr&#x22;, &#x22;file&#x22;: 26574, &#x22;workflow_step&#x22;: { &#x22;id&#x22;: 77, &#x22;title&#x22;: &#x22;Translation&#x22;, &#x22;type&#x22;: &#x22;Translate&#x22; } }}"><div></div></button></div></figure></div></div></td></tr><tr><td><code>theme.changed</code></td><td><p>The event emitted when a user switches from one theme to another.<br></p><div><div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="json"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">light</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="&#x22;light&#x22;"><div></div></button></div></figure></div></div></td></tr></tbody></table> </div> <footer class="sl-flex astro-3yyafb3n"> <div class="meta sl-flex astro-3yyafb3n"> <a href="https://github.com/crowdin/docs/edit/main/src/content/docs/developer/crowdin-apps/apps-js.mdx" class="sl-flex astro-eez2twj6"><svg aria-hidden="true" class="astro-eez2twj6 astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.2em;"><path d="M22 7.24a1 1 0 0 0-.29-.71l-4.24-4.24a1 1 0 0 0-1.1-.22 1 1 0 0 0-.32.22l-2.83 2.83L2.29 16.05a1 1 0 0 0-.29.71V21a1 1 0 0 0 1 1h4.24a1 1 0 0 0 .76-.29l10.87-10.93L21.71 8c.1-.1.17-.2.22-.33a1 1 0 0 0 0-.24v-.14l.07-.05ZM6.83 20H4v-2.83l9.93-9.93 2.83 2.83L6.83 20ZM18.17 8.66l-2.83-2.83 1.42-1.41 2.82 2.82-1.41 1.42Z"/></svg> Edit page</a> </div> <div class="pagination-links astro-u2l5gyhi" dir="ltr"> </div> </footer> <div class="w-full flex astro-sz7xmlte"><div class="mx-auto astro-sz7xmlte"><div class="flex flex-col border p-3 rounded-xl w-72"> <div id="vote-buttons" class="flex gap-4 mx-auto"> <span>Was this page helpful?</span> <div class="flex gap-3"> <svg width="20" height="20" id="like" class="!mt-1 cursor-pointer hover:text-accent-700" data-icon="mdi:thumb-up"> <symbol id="ai:mdi:thumb-up" viewBox="0 0 24 24"><path fill="currentColor" d="M23 10a2 2 0 0 0-2-2h-6.32l.96-4.57c.02-.1.03-.21.03-.32c0-.41-.17-.79-.44-1.06L14.17 1L7.59 7.58C7.22 7.95 7 8.45 7 9v10a2 2 0 0 0 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73zM1 21h4V9H1z"/></symbol><use href="#ai:mdi:thumb-up"></use> </svg> <svg width="20" height="20" id="dislike" class="!mt-1 cursor-pointer hover:text-accent-700" data-icon="mdi:thumb-down"> <symbol id="ai:mdi:thumb-down" viewBox="0 0 24 24"><path fill="currentColor" d="M19 15h4V3h-4m-4 0H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v2a2 2 0 0 0 2 2h6.31l-.95 4.57c-.02.1-.03.2-.03.31c0 .42.17.79.44 1.06L9.83 23l6.58-6.59c.37-.36.59-.86.59-1.41V5a2 2 0 0 0-2-2"/></symbol><use href="#ai:mdi:thumb-down"></use> </svg> </div> </div> <div id="feedback-form" class="mt-2 hidden"> <div> <textarea id="feedback-comment" class="w-full p-2 border border-gray-300 rounded-md resize-none text-base" rows="3" maxlength="250" placeholder="Tell us more..."></textarea> </div> <button id="submit-button" class="bg-accent-600 hover:bg-accent-700 text-white py-1 px-4 !mt-1 rounded-md cursor-pointer transition"> Submit </button> </div> <span id="feedback-success" class="hidden text-accent-800 mx-auto">Thank you for your feedback!</span> </div> </div></div> </div> </div> </main> </div> </div> </div> </div> </body></html>

Pages: 1 2 3 4 5 6 7 8 9 10