CINXE.COM

Configuration File | 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>Configuration File | Developer Portal</title><link rel="canonical" href="https://support.crowdin.com/developer/configuration-file/"/><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>!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split('.');2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement('script')).type='text/javascript',p.async=!0,p.src=s.api_host.replace('.i.posthog.com','-assets.i.posthog.com')+'/static/array.js',(r=t.getElementsByTagName('script')[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a='posthog',u.people=u.people||[],u.toString=function(t){var e='posthog';return'posthog'!==a&&(e+='.'+a),t||(e+=' (stub)'),e},u.people.toString=function(){return u.toString(1)+'.people (stub)'},o='capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures getActiveMatchingSurveys getSurveys getNextSurveyStep onSessionId setPersonProperties'.split(' '),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]); posthog.init( 'phc_14SWLen9KrmOgEyG0IBxnHJjggvNt9tQCFO1W2Vzpyx', { api_host: 'https://hog.crowdin.com', } ) </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.18"/><meta name="generator" content="Starlight v0.28.6"/><meta property="og:title" content="Configuration File"/><meta property="og:type" content="article"/><meta property="og:url" content="https://support.crowdin.com/developer/configuration-file/"/><meta property="og:locale" content="en"/><meta property="og:description" content="Explore the possibilities of the crowdin.yml configuration file"/><meta property="og:site_name" content="Developer Portal"/><meta name="twitter:card" content="summary_large_image"/><meta name="description" content="Explore the possibilities of the crowdin.yml configuration file"/> <meta property="og:image" content="https://support.crowdin.com/og/developer/dev-tools/configuration-file.png"> <meta name="twitter:image" content="https://support.crowdin.com/og/developer/dev-tools/configuration-file.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.DfxALsHi.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.Bf5-m7II.js"></script> <script type="module" src="/_astro/page.7qqag-5g.js"></script><style>.read-more:where(.astro-szj46hnz){display:flex;gap:.5rem;align-items:flex-start}.icon:where(.astro-szj46hnz){--icon-size: 1.5rem;font-size:var(--icon-size);flex-shrink:0;margin-block:calc((var(--sl-line-height) * 1rem - var(--icon-size)) / 2);color:var(--sl-color-text-accent)} </style><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 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 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 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 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 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 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> <a href="https://podcasts.apple.com/us/podcast/agile-localization/id1785636416" rel="me" class="sl-flex astro-dv46nlzh"> <span class="sr-only astro-dv46nlzh">Apple Podcast</span> <svg width="1em" height="1em" viewBox="0 0 20 20" class="astro-dv46nlzh" data-icon="apple-podcast"> <use href="#ai:local:apple-podcast"></use> </svg> </a> <a href="https://open.spotify.com/show/2Vv42MtK93aLTzvEd77Om5" rel="me" class="sl-flex astro-dv46nlzh"> <span class="sr-only astro-dv46nlzh">Spotify Podcast</span> <svg width="1em" height="1em" viewBox="0 0 20 20" class="astro-dv46nlzh" data-icon="spotify-podcast"> <use href="#ai:local:spotify-podcast"></use> </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="0hq8s55" 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="/ai-setup-wizard/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">AI Setup Wizard</span> </a> </li><li class="astro-3ii7xxms"> <a href="/ai-fine-tuning/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">AI Fine-tuning</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> <a href="https://podcasts.apple.com/us/podcast/agile-localization/id1785636416" rel="me" class="sl-flex astro-dv46nlzh"> <span class="sr-only astro-dv46nlzh">Apple Podcast</span> <svg width="1em" height="1em" class="astro-dv46nlzh" data-icon="apple-podcast"> <symbol id="ai:local:apple-podcast" viewBox="0 0 20 20"><path fill="currentColor" fill-rule="evenodd" d="M18.646 16.6a3.8 3.8 0 0 1-1.152 1.512c-.33.252-.726.498-1.266.66-.576.174-1.29.228-2.178.228h-8.1c-.888 0-1.596-.06-2.178-.228a3.7 3.7 0 0 1-1.266-.66A3.8 3.8 0 0 1 1.354 16.6C1.006 15.706 1 14.692 1 14.05v-8.1c0-.642.006-1.656.354-2.55a3.8 3.8 0 0 1 1.152-1.512c.33-.252.726-.498 1.266-.66C4.354 1.06 5.062 1 5.95 1h8.1c.888 0 1.596.06 2.178.228.54.162.936.402 1.266.66.57.438.978 1.068 1.152 1.512C19 4.294 19 5.314 19 5.95v8.1c0 .642-.006 1.656-.354 2.55M9.982 2.992C6.538 3.004 3.718 5.8 3.67 9.244c-.036 2.79 1.746 5.178 4.236 6.054.06.024.12-.03.114-.09l-.031-.216a12 12 0 0 1-.059-.432.24.24 0 0 0-.126-.174 5.52 5.52 0 0 1-3.318-5.118c.03-3 2.478-5.442 5.472-5.466a5.527 5.527 0 0 1 5.568 5.52 5.54 5.54 0 0 1-3.318 5.064.2.2 0 0 0-.126.174l-.09.648c-.012.066.054.114.114.09a6.34 6.34 0 0 0 4.236-5.976c-.012-3.492-2.862-6.336-6.36-6.33m.018 7.29a1.475 1.475 0 1 0 0-2.952 1.475 1.475 0 1 0 0 2.952m1.302 1.068c.144.144.216.3.24.516.048.42.024.78-.03 1.362a34 34 0 0 1-.252 2.034c-.084.534-.15.822-.21 1.026-.096.33-.468.624-1.05.624s-.948-.288-1.05-.624a8 8 0 0 1-.21-1.026 33 33 0 0 1-.252-2.034v-.006c-.048-.579-.078-.938-.03-1.356a.85.85 0 0 1 .24-.516c.27-.288.744-.468 1.302-.468s1.032.186 1.302.468M5.764 9.274c.03-2.244 1.83-4.098 4.074-4.182 2.412-.096 4.41 1.842 4.404 4.23a4.25 4.25 0 0 1-1.854 3.504c-.06.042-.138-.006-.132-.072.012-.258.018-.486.006-.72 0-.078.03-.15.084-.204a3.44 3.44 0 0 0 1.086-2.502 3.43 3.43 0 0 0-3.564-3.426 3.44 3.44 0 0 0-3.294 3.336A3.43 3.43 0 0 0 7.66 11.83c.06.054.09.126.084.204a6 6 0 0 0 .006.726c0 .066-.078.108-.132.072a4.24 4.24 0 0 1-1.854-3.558" clip-rule="evenodd"/></symbol><use href="#ai:local:apple-podcast"></use> </svg> </a> <a href="https://open.spotify.com/show/2Vv42MtK93aLTzvEd77Om5" rel="me" class="sl-flex astro-dv46nlzh"> <span class="sr-only astro-dv46nlzh">Spotify Podcast</span> <svg width="1em" height="1em" class="astro-dv46nlzh" data-icon="spotify-podcast"> <symbol id="ai:local:spotify-podcast" viewBox="0 0 20 20"><path fill="currentColor" d="M15.324 8.979C12.423 7.256 7.637 7.097 4.868 7.938a.841.841 0 1 1-.489-1.611c3.18-.965 8.464-.779 11.804 1.204a.842.842 0 0 1-.86 1.448m-.094 2.551a.7.7 0 0 1-.965.232c-2.419-1.487-6.107-1.918-8.969-1.05a.703.703 0 0 1-.822-1.001.7.7 0 0 1 .415-.34c3.268-.993 7.332-.512 10.11 1.195a.7.7 0 0 1 .23.964m-1.101 2.451a.56.56 0 0 1-.772.187c-2.113-1.292-4.773-1.584-7.906-.868a.561.561 0 1 1-.25-1.094c3.428-.783 6.37-.446 8.741 1.004a.56.56 0 0 1 .186.771M10 1a9 9 0 1 0 0 18 9 9 0 0 0 0-18"/></symbol><use href="#ai:local:spotify-podcast"></use> </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="0hcns7r" 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/ai-setup-wizard/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">AI Setup Wizard</span> </a> </li><li class="astro-3ii7xxms"> <a href="/enterprise/ai-fine-tuning/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">AI Fine-tuning</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><li class="astro-3ii7xxms"> <a href="/enterprise/app-based-workflow-step/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">App-based Workflow Step</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> <a href="https://podcasts.apple.com/us/podcast/agile-localization/id1785636416" rel="me" class="sl-flex astro-dv46nlzh"> <span class="sr-only astro-dv46nlzh">Apple Podcast</span> <svg width="1em" height="1em" viewBox="0 0 20 20" class="astro-dv46nlzh" data-icon="apple-podcast"> <use href="#ai:local:apple-podcast"></use> </svg> </a> <a href="https://open.spotify.com/show/2Vv42MtK93aLTzvEd77Om5" rel="me" class="sl-flex astro-dv46nlzh"> <span class="sr-only astro-dv46nlzh">Spotify Podcast</span> <svg width="1em" height="1em" viewBox="0 0 20 20" class="astro-dv46nlzh" data-icon="spotify-podcast"> <use href="#ai:local:spotify-podcast"></use> </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="0oocp5j" 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/" 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-organization-settings-menu/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Organization Settings Menu</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-profile-settings-menu/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Profile Settings Menu</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-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><li class="astro-3ii7xxms"> <a href="/developer/crowdin-apps-module-webhook/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Webhook</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-workflow-step-type/" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Workflow Step Type</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 open 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/" aria-current="page" 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> <a href="https://podcasts.apple.com/us/podcast/agile-localization/id1785636416" rel="me" class="sl-flex astro-dv46nlzh"> <span class="sr-only astro-dv46nlzh">Apple Podcast</span> <svg width="1em" height="1em" viewBox="0 0 20 20" class="astro-dv46nlzh" data-icon="apple-podcast"> <use href="#ai:local:apple-podcast"></use> </svg> </a> <a href="https://open.spotify.com/show/2Vv42MtK93aLTzvEd77Om5" rel="me" class="sl-flex astro-dv46nlzh"> <span class="sr-only astro-dv46nlzh">Spotify Podcast</span> <svg width="1em" height="1em" viewBox="0 0 20 20" class="astro-dv46nlzh" data-icon="spotify-podcast"> <use href="#ai:local:spotify-podcast"></use> </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="#configuration-file-structure" data-shb-heading="Configuration File Structure" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Configuration File Structure</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#writing-a-simple-configuration-file" data-shb-heading="Writing a Simple Configuration File" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Writing a Simple Configuration File</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#api-credentials-from-environment-variables" data-shb-heading="API Credentials from Environment Variables" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">API Credentials from Environment Variables</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#general-configuration" data-shb-heading="General Configuration" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">General Configuration</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#placeholders" data-shb-heading="Placeholders" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Placeholders</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#usage-of-wildcards" data-shb-heading="Usage of Wildcards" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Usage of Wildcards</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#renaming-translations-file" data-shb-heading="Renaming Translations File" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Renaming Translations File</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#ignoring-files-and-directories" data-shb-heading="Ignoring Files and Directories" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Ignoring Files and Directories</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#excluding-target-languages-for-source-files" data-shb-heading="Excluding Target Languages for Source Files" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Excluding Target Languages for Source Files</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#multilingual-spreadsheet" data-shb-heading="Multilingual Spreadsheet" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Multilingual Spreadsheet</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#saving-directory-structure-on-server" data-shb-heading="Saving Directory Structure on Server" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Saving Directory Structure on Server</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#uploading-files-to-specified-path-with-specified-type" data-shb-heading="Uploading Files to Specified Path with Specified Type" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Uploading Files to Specified Path with Specified Type</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#changed-strings-update" data-shb-heading="Changed Strings Update" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Changed Strings Update</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#custom-segmentation" data-shb-heading="Custom Segmentation" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Custom Segmentation</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#import-options" data-shb-heading="Import Options" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Import Options</span> </a> <ul class="isMobile astro-4elwmllm" style="--depth: 1;"> <li class="astro-4elwmllm" style="--depth: 1;"> <a href="#xml-files-import-options" data-shb-heading="XML Files Import Options" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">XML Files Import Options</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#other-files-import-options" data-shb-heading="Other Files Import Options" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">Other Files Import Options</span> </a> </li> </ul> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#export-options" data-shb-heading="Export Options" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Export Options</span> </a> <ul class="isMobile astro-4elwmllm" style="--depth: 1;"> <li class="astro-4elwmllm" style="--depth: 1;"> <a href="#java-properties-file-format" data-shb-heading="Java .properties File Format" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">Java .properties File Format</span> </a> </li> </ul> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#configuration-file-for-vcs-integrations" data-shb-heading="Configuration File for VCS Integrations" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Configuration File for VCS Integrations</span> </a> <ul class="isMobile astro-4elwmllm" style="--depth: 1;"> <li class="astro-4elwmllm" style="--depth: 1;"> <a href="#pull-request-title-and-labels" data-shb-heading="Pull Request Title and Labels" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">Pull Request Title and Labels</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#commit-message" data-shb-heading="Commit Message" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">Commit Message</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#export-languages" data-shb-heading="Export Languages" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">Export Languages</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#pull-request-assignee" data-shb-heading="Pull Request Assignee" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">Pull Request Assignee</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#pull-request-reviewer" data-shb-heading="Pull Request Reviewer" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">Pull Request Reviewer</span> </a> </li> </ul> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#adding-labels-to-source-strings" data-shb-heading="Adding Labels to Source Strings" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Adding Labels to Source Strings</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#language-mapping" data-shb-heading="Language Mapping" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Language Mapping</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#using-one-configuration-file-for-vcs-integrations-and-cli" data-shb-heading="Using One Configuration File for VCS Integrations and CLI" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Using One Configuration File for VCS Integrations and CLI</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#example-configurations" data-shb-heading="Example Configurations" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Example Configurations</span> </a> </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="#configuration-file-structure" data-shb-heading="Configuration File Structure" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Configuration File Structure</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#writing-a-simple-configuration-file" data-shb-heading="Writing a Simple Configuration File" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Writing a Simple Configuration File</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#api-credentials-from-environment-variables" data-shb-heading="API Credentials from Environment Variables" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">API Credentials from Environment Variables</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#general-configuration" data-shb-heading="General Configuration" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">General Configuration</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#placeholders" data-shb-heading="Placeholders" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Placeholders</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#usage-of-wildcards" data-shb-heading="Usage of Wildcards" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Usage of Wildcards</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#renaming-translations-file" data-shb-heading="Renaming Translations File" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Renaming Translations File</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#ignoring-files-and-directories" data-shb-heading="Ignoring Files and Directories" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Ignoring Files and Directories</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#excluding-target-languages-for-source-files" data-shb-heading="Excluding Target Languages for Source Files" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Excluding Target Languages for Source Files</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#multilingual-spreadsheet" data-shb-heading="Multilingual Spreadsheet" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Multilingual Spreadsheet</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#saving-directory-structure-on-server" data-shb-heading="Saving Directory Structure on Server" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Saving Directory Structure on Server</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#uploading-files-to-specified-path-with-specified-type" data-shb-heading="Uploading Files to Specified Path with Specified Type" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Uploading Files to Specified Path with Specified Type</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#changed-strings-update" data-shb-heading="Changed Strings Update" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Changed Strings Update</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#custom-segmentation" data-shb-heading="Custom Segmentation" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Custom Segmentation</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#import-options" data-shb-heading="Import Options" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Import Options</span> </a> <ul class="astro-4elwmllm" style="--depth: 1;"> <li class="astro-4elwmllm" style="--depth: 1;"> <a href="#xml-files-import-options" data-shb-heading="XML Files Import Options" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">XML Files Import Options</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#other-files-import-options" data-shb-heading="Other Files Import Options" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">Other Files Import Options</span> </a> </li> </ul> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#export-options" data-shb-heading="Export Options" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Export Options</span> </a> <ul class="astro-4elwmllm" style="--depth: 1;"> <li class="astro-4elwmllm" style="--depth: 1;"> <a href="#java-properties-file-format" data-shb-heading="Java .properties File Format" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">Java .properties File Format</span> </a> </li> </ul> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#configuration-file-for-vcs-integrations" data-shb-heading="Configuration File for VCS Integrations" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Configuration File for VCS Integrations</span> </a> <ul class="astro-4elwmllm" style="--depth: 1;"> <li class="astro-4elwmllm" style="--depth: 1;"> <a href="#pull-request-title-and-labels" data-shb-heading="Pull Request Title and Labels" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">Pull Request Title and Labels</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#commit-message" data-shb-heading="Commit Message" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">Commit Message</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#export-languages" data-shb-heading="Export Languages" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">Export Languages</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#pull-request-assignee" data-shb-heading="Pull Request Assignee" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">Pull Request Assignee</span> </a> </li><li class="astro-4elwmllm" style="--depth: 1;"> <a href="#pull-request-reviewer" data-shb-heading="Pull Request Reviewer" class="astro-4elwmllm" style="--depth: 1;"> <span class="astro-7vjlygkt">Pull Request Reviewer</span> </a> </li> </ul> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#adding-labels-to-source-strings" data-shb-heading="Adding Labels to Source Strings" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Adding Labels to Source Strings</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#language-mapping" data-shb-heading="Language Mapping" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Language Mapping</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#using-one-configuration-file-for-vcs-integrations-and-cli" data-shb-heading="Using One Configuration File for VCS Integrations and CLI" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Using One Configuration File for VCS Integrations and CLI</span> </a> </li><li class="astro-4elwmllm" style="--depth: 0;"> <a href="#example-configurations" data-shb-heading="Example Configurations" class="astro-4elwmllm" style="--depth: 0;"> <span class="astro-7vjlygkt">Example Configurations</span> </a> </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">Configuration File</h1> </div> </div> <div class="content-panel astro-7nkwcw3z"> <div class="sl-container astro-7nkwcw3z"> <div class="sl-markdown-content"> <p>The various Crowdin tools use a <code dir="auto">crowdin.yml</code> configuration file that specifies the resources to be managed, including the files to be uploaded to Crowdin and the locations of the corresponding translations.</p> <div class="card-grid astro-zntqmydn"><div class="sl-link-card astro-mf7fz2mj"> <span class="sl-flex stack astro-mf7fz2mj"> <a href="/integrations/#vcs-integrations" target="_blank" class="astro-mf7fz2mj"> <span class="title astro-mf7fz2mj">VCS Integrations</span> </a> <span class="description astro-mf7fz2mj">GitHub, GitLab, Bitbucket, Azure Repos.</span> </span> <svg aria-hidden="true" class="icon rtl:flip astro-mf7fz2mj astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.333em;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg> </div> <div class="sl-link-card astro-mf7fz2mj"> <span class="sl-flex stack astro-mf7fz2mj"> <a href="https://crowdin.github.io/crowdin-cli/" target="_blank" class="astro-mf7fz2mj"> <span class="title astro-mf7fz2mj">Console Client (CLI)</span> </a> <span class="description astro-mf7fz2mj">Cross-platform command-line tool.</span> </span> <svg aria-hidden="true" class="icon rtl:flip astro-mf7fz2mj astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.333em;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg> </div> <div class="sl-link-card astro-mf7fz2mj"> <span class="sl-flex stack astro-mf7fz2mj"> <a href="https://marketplace.visualstudio.com/items?itemName=Crowdin.vscode-crowdin" target="_blank" class="astro-mf7fz2mj"> <span class="title astro-mf7fz2mj">Visual Studio Code Plugin</span> </a> </span> <svg aria-hidden="true" class="icon rtl:flip astro-mf7fz2mj astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.333em;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg> </div> <div class="sl-link-card astro-mf7fz2mj"> <span class="sl-flex stack astro-mf7fz2mj"> <a href="https://github.com/crowdin/android-studio-plugin#readme" target="_blank" class="astro-mf7fz2mj"> <span class="title astro-mf7fz2mj">Android Studio Plugin</span> </a> </span> <svg aria-hidden="true" class="icon rtl:flip astro-mf7fz2mj astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.333em;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg> </div> </div> <h2 id="configuration-file-structure"><a href="#configuration-file-structure">Configuration File Structure</a></h2> <p>A valid <code dir="auto">crowdin.yml</code> configuration file has the following structure, so please ensure that you fill out all the needed information:</p> <ul> <li>Head of the file with project credentials, preferences, and access information.</li> <li>One files array element that describes a set of source and translation files you will manage.</li> <li>Required fields in the files array: <code dir="auto">source</code> that defines filters for the source files and <code dir="auto">translation</code> with instructions on where to store the translated files or where to look for translations you already have if you want to upload them while setting up the CLI.</li> </ul> <h2 id="writing-a-simple-configuration-file"><a href="#writing-a-simple-configuration-file">Writing a Simple Configuration File</a></h2> <p>A typical configuration file looks similar to the following:</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 has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">project_id</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">projectId</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">api_token</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">personal-access-token</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">base_path</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">.</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">base_url</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">https://api.crowdin.com</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"> </div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">preserve_hierarchy</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#FF5874;--1:#A54A4A">true</span></div></div><div class="ec-line"><div class="code"> </div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</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">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/locale/en/folder1/[0-2].txt</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/locale/%two_letters_code%/folder1/%original_file_name%</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;project_id&#x22;: &#x22;projectId&#x22;&#x22;api_token&#x22;: &#x22;personal-access-token&#x22;&#x22;base_path&#x22;: &#x22;.&#x22;&#x22;base_url&#x22;: &#x22;https://api.crowdin.com&#x22;&#x22;preserve_hierarchy&#x22;: true&#x22;files&#x22;: [ { &#x22;source&#x22;: &#x22;/locale/en/folder1/[0-2].txt&#x22;, &#x22;translation&#x22;: &#x22;/locale/%two_letters_code%/folder1/%original_file_name%&#x22; },]"><div></div></button></div></figure></div> <table><thead><tr><th><div class="w-44"></div>Name</th><th>Description</th></tr></thead><tbody><tr><td><code>project_id</code></td><td>Crowdin Project numeric ID</td></tr><tr><td><code>api_token</code></td><td>Crowdin Personal Access Token. The token owner should have at least Manager permissions in the project</td></tr><tr><td><code>base_path</code><div class="text-gray-400">optional</div></td><td>Path to your project directory on a local machine relative to the <code dir="auto">crowdin.yml</code> configuration file</td></tr><tr><td><code>base_url</code><br/><div class="text-gray-400">optional</div></td><td>Crowdin API base URL. Optional for crowdin.com. For Crowdin Enterprise use the <code dir="auto">https://{organization-name}.api.crowdin.com</code></td></tr><tr><td><code>preserve_hierarchy</code><div class="text-gray-400">optional</div></td><td>If set to <code>true</code>, the directory structure will be preserved on the server. If set to <code dir="auto">false</code>, the directory structure will be flattened.</td></tr><tr><td><code>source</code></td><td>Filter for the source files. Wildcards are supported.</td></tr><tr><td><code>translation</code></td><td>Path to store the translated files. Wildcards are supported.</td></tr></tbody></table> <h2 id="api-credentials-from-environment-variables"><a href="#api-credentials-from-environment-variables">API Credentials from Environment Variables</a></h2> <p>You could load the API Credentials from an environment variable, for example:</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">project_id_env</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">CROWDIN_PROJECT_ID</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">api_token_env</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">CROWDIN_PERSONAL_TOKEN</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">base_path_env</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">CROWDIN_BASE_PATH</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">base_url_env</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">CROWDIN_BASE_URL</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;project_id_env&#x22;: &#x22;CROWDIN_PROJECT_ID&#x22;&#x22;api_token_env&#x22;: &#x22;CROWDIN_PERSONAL_TOKEN&#x22;&#x22;base_path_env&#x22;: &#x22;CROWDIN_BASE_PATH&#x22;&#x22;base_url_env&#x22;: &#x22;CROWDIN_BASE_URL&#x22;"><div></div></button></div></figure></div> <p>If mixed, <em>api_token</em> and <em>project_id</em> are prioritized:</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">project_id_env</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">CROWDIN_PROJECT_ID</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#809191;--1:#616671"># Low priority</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">api_token_env</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">CROWDIN_PERSONAL_TOKEN</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#809191;--1:#616671"># Low priority</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">base_path_env</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">CROWDIN_BASE_PATH</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#809191;--1:#616671"># Low priority</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">base_url_env</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">CROWDIN_BASE_PATH</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#809191;--1:#616671"># Low priority</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">project_id</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">projectId</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#809191;--1:#616671"># High priority</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">api_token</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">personal-access-token</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#809191;--1:#616671"># High priority</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">base_path</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">.</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#809191;--1:#616671"># High priority</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">base_url</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">https://api.crowdin.com</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#809191;--1:#616671"># High priority</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="&#x22;project_id_env&#x22;: &#x22;CROWDIN_PROJECT_ID&#x22; # Low priority&#x22;api_token_env&#x22;: &#x22;CROWDIN_PERSONAL_TOKEN&#x22; # Low priority&#x22;base_path_env&#x22;: &#x22;CROWDIN_BASE_PATH&#x22; # Low priority&#x22;base_url_env&#x22;: &#x22;CROWDIN_BASE_PATH&#x22; # Low priority&#x22;project_id&#x22;: &#x22;projectId&#x22; # High priority&#x22;api_token&#x22;: &#x22;personal-access-token&#x22; # High priority&#x22;base_path&#x22;: &#x22;.&#x22; # High priority&#x22;base_url&#x22;: &#x22;https://api.crowdin.com&#x22; # High priority"><div></div></button></div></figure></div> <h2 id="general-configuration"><a href="#general-configuration">General Configuration</a></h2> <p>The sample configuration provided above has source and translation attributes containing standard wildcards (also known as globbing patterns) to make it easier to work with multiple files.</p> <p>Here are patterns you can use:</p> <hr> <p><strong>*</strong> (asterisk)</p> <p>Matches any character in the file or directory name. If you specify <code dir="auto">*.json</code>, it will include all files like <code dir="auto">messages.json</code>, <code dir="auto">about_us.json</code>, and anything that ends with <code dir="auto">.json</code>.</p> <hr> <p><strong>**</strong> (doubled asterisk)</p> <p>Matches any string recursively (including subdirectories). Note that you can use <code dir="auto">**</code> in both the source and translation patterns. When you use <code dir="auto">**</code> in the translation pattern, it always includes a sub-path from the source for a given file. For example, you can use source: <code dir="auto">/en/**/*.po</code> to recursively upload all <code dir="auto">*.po</code> files to Crowdin Enterprise. The translation pattern will be <code dir="auto">/%two_letters_code%/**/%original_file_name%</code>.</p> <hr> <p><strong>?</strong> (question mark)</p> <p>Matches any single character.</p> <hr> <p><strong>[set]</strong></p> <p>Matchesany single character in a set. Behaves exactly like character sets in Regexp, including set negation (<code dir="auto">[^a-z]</code>).</p> <hr> <p><strong>\</strong> (backslash)</p> <p>Escapes the next metacharacter.</p> <h2 id="placeholders"><a href="#placeholders">Placeholders</a></h2> <p>Crowdin CLI allows to use the following placeholders to put appropriate variables into the resulting file name:</p> <table><thead><tr><th><strong>Name</strong></th><th><strong>Description</strong></th></tr></thead><tbody><tr><td><code dir="auto">%original_file_name%</code></td><td>Original file name</td></tr><tr><td><code dir="auto">%original_path%</code></td><td>Take parent folder names in the Crowdin Enterprise project to build file path in the resulting bundle</td></tr><tr><td><code dir="auto">%file_extension%</code></td><td>Original file extension</td></tr><tr><td><code dir="auto">%file_name%</code></td><td>File name without extension</td></tr><tr><td><code dir="auto">%language%</code></td><td>Language name (e.g., Ukrainian)</td></tr><tr><td><code dir="auto">%two_letters_code%</code></td><td>Language code ISO 639-1 (e.g., uk)</td></tr><tr><td><code dir="auto">%three_letters_code%</code></td><td>Language code ISO 639-2/T (e.g., ukr)</td></tr><tr><td><code dir="auto">%locale%</code></td><td>Locale (e.g., uk-UA)</td></tr><tr><td><code dir="auto">%locale_with_underscore%</code></td><td>Locale (e.g., uk_UA)</td></tr><tr><td><code dir="auto">%android_code%</code></td><td>Android Locale identifier used to name “values-” directories</td></tr><tr><td><code dir="auto">%osx_code%</code></td><td>OS X Locale identifier used to name “.lproj” directories</td></tr><tr><td><code dir="auto">%osx_locale%</code></td><td>OS X locale used to name translation resources (e.g., uk, zh-Hans, zh_HK)</td></tr></tbody></table> <p>You can also define the path for files in the resulting archive by putting a slash (<code dir="auto">/</code>) at the beginning of the pattern.</p> <h2 id="usage-of-wildcards"><a href="#usage-of-wildcards">Usage of Wildcards</a></h2> <p>Structure of files and directories on the local machine:</p> <starlight-file-tree class="not-content astro-p67cqifm" data-pagefind-ignore><ul><li class="directory"><details open><summary><span class="tree-entry"><span class=""><span><span class="sr-only">Directory</span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M22.073 4.900L22.073 4.900L12.148 4.900L12.148 3.950Q12.148 3.125 11.585 2.563Q11.023 2 10.198 2L10.198 2L0.048 2L0.048 22L23.948 22L23.948 6.850Q23.998 6.025 23.448 5.462Q22.898 4.900 22.073 4.900Z"></path></svg></span>base_path </span></span></summary><ul><li class="directory"><details open><summary><span class="tree-entry"><span class=""><span><span class="sr-only">Directory</span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M22.073 4.900L22.073 4.900L12.148 4.900L12.148 3.950Q12.148 3.125 11.585 2.563Q11.023 2 10.198 2L10.198 2L0.048 2L0.048 22L23.948 22L23.948 6.850Q23.998 6.025 23.448 5.462Q22.898 4.900 22.073 4.900Z"></path></svg></span>folder </span></span></summary><ul><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M0.372 0.202L0.372 0.202Q6.803 0.084 12.408 3.506L12.408 3.506Q17.718 6.751 20.845 12.208Q23.972 17.666 23.795 23.625L23.795 23.625L19.016 23.625Q18.839 19.731 17.541 16.486Q16.243 13.241 13.677 10.527Q11.110 7.813 7.688 6.456L7.688 6.456Q4.384 5.158 0.549 5.158L0.549 5.158Q0.372 3.506 0.372 0.202ZM16.243 23.802L16.243 23.802L11.464 23.802L10.874 20.852Q9.753 17.489 7.600 15.542Q5.446 13.595 2.024 12.946L2.024 12.946Q1.670 12.710 0.726 12.710L0.726 12.710Q0.490 12.710 0.431 12.621Q0.372 12.533 0.372 12.356L0.372 12.356L0.372 7.754Q5.977 7.754 10.520 11.471L10.520 11.471Q15.948 16.368 16.243 23.802ZM6.862 20.498L6.862 20.498Q6.862 21.855 5.889 22.828Q4.915 23.802 3.529 23.802Q2.142 23.802 1.228 22.858Q0.313 21.914 0.195 20.498L0.195 20.498Q0.195 19.082 1.169 18.108Q2.142 17.135 3.529 17.135Q4.915 17.135 5.889 18.108Q6.862 19.082 6.862 20.498Z"></path></svg></span>1.xml</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>1.txt</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>123.txt</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>123_test.txt</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>a.txt</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>a1.txt</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>crowdin?test.txt</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>crowdin_test.txt</span></span></li></ul></details></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M0.372 0.202L0.372 0.202Q6.803 0.084 12.408 3.506L12.408 3.506Q17.718 6.751 20.845 12.208Q23.972 17.666 23.795 23.625L23.795 23.625L19.016 23.625Q18.839 19.731 17.541 16.486Q16.243 13.241 13.677 10.527Q11.110 7.813 7.688 6.456L7.688 6.456Q4.384 5.158 0.549 5.158L0.549 5.158Q0.372 3.506 0.372 0.202ZM16.243 23.802L16.243 23.802L11.464 23.802L10.874 20.852Q9.753 17.489 7.600 15.542Q5.446 13.595 2.024 12.946L2.024 12.946Q1.670 12.710 0.726 12.710L0.726 12.710Q0.490 12.710 0.431 12.621Q0.372 12.533 0.372 12.356L0.372 12.356L0.372 7.754Q5.977 7.754 10.520 11.471L10.520 11.471Q15.948 16.368 16.243 23.802ZM6.862 20.498L6.862 20.498Q6.862 21.855 5.889 22.828Q4.915 23.802 3.529 23.802Q2.142 23.802 1.228 22.858Q0.313 21.914 0.195 20.498L0.195 20.498Q0.195 19.082 1.169 18.108Q2.142 17.135 3.529 17.135Q4.915 17.135 5.889 18.108Q6.862 19.082 6.862 20.498Z"></path></svg></span>1.xml</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>1.txt</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>123.txt</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>123_test.txt</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>a.txt</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>a1.txt</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>crowdin?test.txt</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>crowdin_test.txt</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>3.txt</span></span></li></ul></details></li></ul></starlight-file-tree> <p>Example 1. Usage of wildcards in the source path:</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml" class="wrap" style="--ecMaxLine:112ch"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: [</span></div></div><div class="ec-line" style="--ecIndent:2ch"><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" style="--ecIndent:6ch"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/?[0-9].txt</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">, </span><span style="--0:#809191;--1:#616671"># upload a1.txt, folder/a1.txt</span></div></div><div class="ec-line" style="--ecIndent:6ch"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/%two_letters_code%_%original_file_name%</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line" style="--ecIndent:2ch"><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" style="--ecIndent:2ch"><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" style="--ecIndent:6ch"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/*</span><span style="--0:#F78C6C;--1:#AA0982">\\</span><span style="--0:#ECC48D;--1:#9B504E">?*.txt</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">, </span><span style="--0:#809191;--1:#616671"># upload crowdin?test.txt, folder/crowdin?test.txt</span></div></div><div class="ec-line" style="--ecIndent:6ch"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/%two_letters_code%_%original_file_name%</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line" style="--ecIndent:2ch"><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" style="--ecIndent:2ch"><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" style="--ecIndent:6ch"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/[^0-2].txt</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">, </span><span style="--0:#809191;--1:#616671"># upload 3.txt, folder/3.txt, a.txt, folder/a.txt (ignore 1.txt, folder/1.txt)</span></div></div><div class="ec-line" style="--ecIndent:6ch"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/%two_letters_code%_%original_file_name%</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line" style="--ecIndent:2ch"><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;files&#x22;: [ { &#x22;source&#x22;: &#x22;/**/?[0-9].txt&#x22;, # upload a1.txt, folder/a1.txt &#x22;translation&#x22;: &#x22;/**/%two_letters_code%_%original_file_name%&#x22; }, { &#x22;source&#x22;: &#x22;/**/*\\?*.txt&#x22;, # upload crowdin?test.txt, folder/crowdin?test.txt &#x22;translation&#x22;: &#x22;/**/%two_letters_code%_%original_file_name%&#x22; }, { &#x22;source&#x22;: &#x22;/**/[^0-2].txt&#x22;, # upload 3.txt, folder/3.txt, a.txt, folder/a.txt (ignore 1.txt, folder/1.txt) &#x22;translation&#x22;: &#x22;/**/%two_letters_code%_%original_file_name%&#x22; }]"><div></div></button></div></figure></div> <p>Example 2. Usage of wildcards for ignoring files:</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</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">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/*.*</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">, </span><span style="--0:#809191;--1:#616671">#upload all files that the base_path contains</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/%two_letters_code%_%original_file_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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">ignore</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/%two_letters_code%_%original_file_name%</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">, </span><span style="--0:#809191;--1:#616671">#ignore the translated files</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/?.txt</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">, </span><span style="--0:#809191;--1:#616671">#ignore 1.txt, a.txt, folder/1.txt, folder/a.txt</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/[0-9].txt</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">, </span><span style="--0:#809191;--1:#616671">#ignore 1.txt, folder/1.txt</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/*</span><span style="--0:#F78C6C;--1:#AA0982">\\</span><span style="--0:#ECC48D;--1:#9B504E">?*.txt</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">, </span><span style="--0:#809191;--1:#616671">#ignore crowdin?test.txt, folder/crowdin?test.txt</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/[0-9][0-9][0-9].txt</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">, </span><span style="--0:#809191;--1:#616671">#ignore 123.txt , folder/123.txt</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/[0-9]*_*.txt</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#809191;--1:#616671">#ignore 123_test.txt, folder/123_test.txt</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;files&#x22;: [ { &#x22;source&#x22;: &#x22;/**/*.*&#x22;, #upload all files that the base_path contains &#x22;translation&#x22;: &#x22;/**/%two_letters_code%_%original_file_name%&#x22;, &#x22;ignore&#x22;: [ &#x22;/**/%two_letters_code%_%original_file_name%&#x22;, #ignore the translated files &#x22;/**/?.txt&#x22;, #ignore 1.txt, a.txt, folder/1.txt, folder/a.txt &#x22;/**/[0-9].txt&#x22;, #ignore 1.txt, folder/1.txt &#x22;/**/*\\?*.txt&#x22;, #ignore crowdin?test.txt, folder/crowdin?test.txt &#x22;/**/[0-9][0-9][0-9].txt&#x22;, #ignore 123.txt , folder/123.txt &#x22;/**/[0-9]*_*.txt&#x22; #ignore 123_test.txt, folder/123_test.txt ] }]"><div></div></button></div></figure></div> <h2 id="renaming-translations-file"><a href="#renaming-translations-file">Renaming Translations File</a></h2> <p>If you need to rename a file with translations after the export, you can easily do this with the help of the parameter <code dir="auto">translation_replace</code>.</p> <p>For example, if the file is named <code dir="auto">strings_en.po</code>, it can be renamed to <code dir="auto">strings.po</code>. For this, add a new parameter (at the same level as the translation parameter) to the configuration file:</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</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">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/locale/**/*_en.po</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/locale/**/%original_file_name%_%two_letters_code%</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation_replace</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">_en</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </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;files&#x22;: [ { &#x22;source&#x22;: &#x22;/locale/**/*_en.po&#x22;, &#x22;translation&#x22;: &#x22;/locale/**/%original_file_name%_%two_letters_code%&#x22;, &#x22;translation_replace&#x22;: { &#x22;_en&#x22;: &#x22;&#x22; } }]"><div></div></button></div></figure></div> <p>In this case, <code dir="auto">_en</code> will be erased from the file name.</p> <h2 id="ignoring-files-and-directories"><a href="#ignoring-files-and-directories">Ignoring Files and Directories</a></h2> <p>From time to time, there are files and directories you don’t need to translate in Crowdin. In such cases, local per-file rules can be added to the config file in your project.</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</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">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/*.properties</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/%file_name%_%two_letters_code%.%file_extension%</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">ignore</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/test/file.properties</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/example.properties</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 class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/locale/en/**/*.po</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/locale/%two_letters_code%/**/%original_file_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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">ignore</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/locale/en/templates</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/locale/en/workflow</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;files&#x22;: [ { &#x22;source&#x22;: &#x22;/**/*.properties&#x22;, &#x22;translation&#x22;: &#x22;/**/%file_name%_%two_letters_code%.%file_extension%&#x22;, &#x22;ignore&#x22;: [ &#x22;/test/file.properties&#x22;, &#x22;/example.properties&#x22; ] }, { &#x22;source&#x22;: &#x22;/locale/en/**/*.po&#x22;, &#x22;translation&#x22;: &#x22;/locale/%two_letters_code%/**/%original_file_name%&#x22;, &#x22;ignore&#x22;: [ &#x22;/locale/en/templates&#x22;, &#x22;/locale/en/workflow&#x22; ] }]"><div></div></button></div></figure></div> <p>You can also use <a href="#usage-of-wildcards">wildcards</a> to ignore files.</p> <h2 id="excluding-target-languages-for-source-files"><a href="#excluding-target-languages-for-source-files">Excluding Target Languages for Source Files</a></h2> <p>By default, the source files are available for translation into all target languages of the project. If some source files shouldn’t be translated into specific target languages, you can exclude them with the help of the parameter <code dir="auto">excluded_target_languages</code>.</p> <p>Configuration file example:</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</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">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/resources/en/*.json</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/resources/%two_letters_code%/%original_file_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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">excluded_target_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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">uk</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">fr</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;files&#x22;: [ { &#x22;source&#x22;: &#x22;/resources/en/*.json&#x22;, &#x22;translation&#x22;: &#x22;/resources/%two_letters_code%/%original_file_name%&#x22;, &#x22;excluded_target_languages&#x22;: [ &#x22;uk&#x22;, &#x22;fr&#x22; ] }]"><div></div></button></div></figure></div> <h2 id="multilingual-spreadsheet"><a href="#multilingual-spreadsheet">Multilingual Spreadsheet</a></h2> <p>If a CSV or XLS/XLSX file contains the translations for all target languages, you should specify appropriate language codes in the scheme.</p> <p>CSV file example:</p> <div class="expressive-code"><figure class="frame not-content"><figcaption class="header"></figcaption><pre data-language="csv"><code><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">identifier,</span><span style="--0:#C792EA;--1:#8D46B4">source_phrase,</span><span style="--0:#82AAFF;--1:#3C63B3">context,</span><span style="--0:#809191;--1:#616671">Ukrainian,</span><span style="--0:#ECC48D;--1:#3C63B3">Russian,</span><span style="--0:#D7DBE0;--1:#403F53">French</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">ident1,</span><span style="--0:#C792EA;--1:#8D46B4">Source 1,</span><span style="--0:#82AAFF;--1:#3C63B3">Context 1,</span><span style="--0:#809191;--1:#616671">,</span><span style="--0:#ECC48D;--1:#3C63B3">,</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">ident2,</span><span style="--0:#C792EA;--1:#8D46B4">Source 2,</span><span style="--0:#82AAFF;--1:#3C63B3">Context 2,</span><span style="--0:#809191;--1:#616671">,</span><span style="--0:#ECC48D;--1:#3C63B3">,</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D6DEEB;--1:#403F53">ident3,</span><span style="--0:#C792EA;--1:#8D46B4">Source 3,</span><span style="--0:#82AAFF;--1:#3C63B3">Context 3,</span><span style="--0:#809191;--1:#616671">,</span><span style="--0:#ECC48D;--1:#3C63B3">,</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="identifier,source_phrase,context,Ukrainian,Russian,Frenchident1,Source 1,Context 1,,,ident2,Source 2,Context 2,,,ident3,Source 3,Context 3,,,"><div></div></button></div></figure></div> <p>Configuration file example:</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</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">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">multicolumn.csv</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">multicolumn.csv</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">first_line_contains_header</span><span style="--0:#D9F5DD;--1:#111111">"</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">scheme</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">identifier,source_phrase,context,uk,ru,fr</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;files&#x22;: [ { &#x22;source&#x22;: &#x22;multicolumn.csv&#x22;, &#x22;translation&#x22;: &#x22;multicolumn.csv&#x22;, &#x22;first_line_contains_header&#x22;: true, &#x22;scheme&#x22;: &#x22;identifier,source_phrase,context,uk,ru,fr&#x22; }]"><div></div></button></div></figure></div> <p>If your CSV or XLS/XLSX file contains columns that should be skipped on import, use <code dir="auto">none</code> for such columns in the scheme, for example:</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">scheme</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> : </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">identifier,source_phrase,context,uk,none,ru,none,fr</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;scheme&#x22; : &#x22;identifier,source_phrase,context,uk,none,ru,none,fr&#x22;"><div></div></button></div></figure></div> <h5 id="scheme-constants"><a href="#scheme-constants">Scheme Constants</a></h5> <p>To form the scheme for your CSV or XLS/XLSX file, use the following constants:</p> <ul> <li><code dir="auto">identifier</code> – Column contains string identifiers.</li> <li><code dir="auto">source_phrase</code> – Column contains source strings.</li> <li><code dir="auto">source_or_translation</code> – Column contains source strings, but the same column will be filled with translations when the file is exported. When uploading existing translations, the values from this column will be used as translations.</li> <li><code dir="auto">translation</code> – Column contains translations.</li> <li><code dir="auto">context</code> – Column contains comments or context information for the source strings.</li> <li><code dir="auto">max_length</code> – Column contains max.length limit values for the translations of the strings.</li> <li><code dir="auto">labels</code> – Column contains labels for the source strings.</li> <li><code dir="auto">none</code> – Column that will be skipped on import.</li> </ul> <h2 id="saving-directory-structure-on-server"><a href="#saving-directory-structure-on-server">Saving Directory Structure on Server</a></h2> <p>You can use the <code dir="auto">preserve_hierarchy</code> option to preserve or flatten the directory structure of your source files in the Crowdin project.</p> <p>Example of the configuration file using the <code dir="auto">preserve_hierarchy</code> option:</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">preserve_hierarchy</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#FF5874;--1:#A54A4A">true</span></div></div><div class="ec-line"><div class="code"> </div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</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">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/locale/en/**/*.po</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/locale/%two_letters_code%/**/%original_file_name%</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;preserve_hierarchy&#x22;: true&#x22;files&#x22;: [ { &#x22;source&#x22;: &#x22;/locale/en/**/*.po&#x22;, &#x22;translation&#x22;: &#x22;/locale/%two_letters_code%/**/%original_file_name%&#x22; }]"><div></div></button></div></figure></div> <p>Let’s say the file/folder structure on your machine looks like this:</p> <starlight-file-tree class="not-content astro-p67cqifm" data-pagefind-ignore><ul><li class="directory"><details open><summary><span class="tree-entry"><span class=""><span><span class="sr-only">Directory</span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M22.073 4.900L22.073 4.900L12.148 4.900L12.148 3.950Q12.148 3.125 11.585 2.563Q11.023 2 10.198 2L10.198 2L0.048 2L0.048 22L23.948 22L23.948 6.850Q23.998 6.025 23.448 5.462Q22.898 4.900 22.073 4.900Z"></path></svg></span>locale </span></span></summary><ul><li class="directory"><details open><summary><span class="tree-entry"><span class=""><span><span class="sr-only">Directory</span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M22.073 4.900L22.073 4.900L12.148 4.900L12.148 3.950Q12.148 3.125 11.585 2.563Q11.023 2 10.198 2L10.198 2L0.048 2L0.048 22L23.948 22L23.948 6.850Q23.998 6.025 23.448 5.462Q22.898 4.900 22.073 4.900Z"></path></svg></span>en </span></span></summary><ul><li class="directory"><details><summary><span class="tree-entry"><span class=""><span><span class="sr-only">Directory</span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M22.073 4.900L22.073 4.900L12.148 4.900L12.148 3.950Q12.148 3.125 11.585 2.563Q11.023 2 10.198 2L10.198 2L0.048 2L0.048 22L23.948 22L23.948 6.850Q23.998 6.025 23.448 5.462Q22.898 4.900 22.073 4.900Z"></path></svg></span>emails/</span></span></summary><ul><li class="file empty"><span class="tree-entry"><span class="">…</span></span></li></ul></details></li><li class="directory"><details open><summary><span class="tree-entry"><span class=""><span><span class="sr-only">Directory</span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M22.073 4.900L22.073 4.900L12.148 4.900L12.148 3.950Q12.148 3.125 11.585 2.563Q11.023 2 10.198 2L10.198 2L0.048 2L0.048 22L23.948 22L23.948 6.850Q23.998 6.025 23.448 5.462Q22.898 4.900 22.073 4.900Z"></path></svg></span>app </span></span></summary><ul><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>foo.po</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>bar.po</span></span></li></ul></details></li></ul></details></li></ul></details></li></ul></starlight-file-tree> <p>If you don’t use the <code dir="auto">"preserve_hierarchy": true</code> option in your configuration file at all or use it with the <code dir="auto">false</code> value, all shared directories will be skipped, and the file structure in Crowdin will be represented as follows:</p> <starlight-file-tree class="not-content astro-p67cqifm" data-pagefind-ignore><ul><li class="directory"><details open><summary><span class="tree-entry"><span class=""><span><span class="sr-only">Directory</span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M22.073 4.900L22.073 4.900L12.148 4.900L12.148 3.950Q12.148 3.125 11.585 2.563Q11.023 2 10.198 2L10.198 2L0.048 2L0.048 22L23.948 22L23.948 6.850Q23.998 6.025 23.448 5.462Q22.898 4.900 22.073 4.900Z"></path></svg></span>(root)/ </span></span></summary><ul><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>foo.po</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>bar.po</span></span></li></ul></details></li></ul></starlight-file-tree> <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>For VCS integrations, the default value of the preserve hierarchy option is <code dir="auto">true</code>. The <code dir="auto">false</code> value works only if your source files have a shared root directory.</p> </section> </aside> <p>Using the <code dir="auto">"preserve_hierarchy": true</code> option, the file structure in Crowdin will be represented as follows:</p> <starlight-file-tree class="not-content astro-p67cqifm" data-pagefind-ignore><ul><li class="directory"><details open><summary><span class="tree-entry"><span class=""><span><span class="sr-only">Directory</span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M22.073 4.900L22.073 4.900L12.148 4.900L12.148 3.950Q12.148 3.125 11.585 2.563Q11.023 2 10.198 2L10.198 2L0.048 2L0.048 22L23.948 22L23.948 6.850Q23.998 6.025 23.448 5.462Q22.898 4.900 22.073 4.900Z"></path></svg></span>locale </span></span></summary><ul><li class="directory"><details open><summary><span class="tree-entry"><span class=""><span><span class="sr-only">Directory</span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M22.073 4.900L22.073 4.900L12.148 4.900L12.148 3.950Q12.148 3.125 11.585 2.563Q11.023 2 10.198 2L10.198 2L0.048 2L0.048 22L23.948 22L23.948 6.850Q23.998 6.025 23.448 5.462Q22.898 4.900 22.073 4.900Z"></path></svg></span>en </span></span></summary><ul><li class="directory"><details open><summary><span class="tree-entry"><span class=""><span><span class="sr-only">Directory</span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M22.073 4.900L22.073 4.900L12.148 4.900L12.148 3.950Q12.148 3.125 11.585 2.563Q11.023 2 10.198 2L10.198 2L0.048 2L0.048 22L23.948 22L23.948 6.850Q23.998 6.025 23.448 5.462Q22.898 4.900 22.073 4.900Z"></path></svg></span>app </span></span></summary><ul><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>foo.po</span></span></li><li class="file"><span class="tree-entry"><span class=""><span><svg width="16" height="16" class="tree-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z"></path></svg></span>bar.po</span></span></li></ul></details></li></ul></details></li></ul></details></li></ul></starlight-file-tree> <p>The directories that don’t contain any files for translation won’t be created in Crowdin (i.e., as the <code dir="auto">emails</code> directory in the example above).</p> <h2 id="uploading-files-to-specified-path-with-specified-type"><a href="#uploading-files-to-specified-path-with-specified-type">Uploading Files to Specified Path with Specified Type</a></h2> <p>This feature adds support for two optional parameters in the yml file section: <code dir="auto">dest</code> and <code dir="auto">type</code>. It’s typically used for projects where the uploaded name must be different so that Crowdin can detect the type correctly.</p> <p>The <code dir="auto">dest</code> parameter allows you to specify a file name in Crowdin. It works for multiple files at once and supports the following placeholders: <code dir="auto">%original_file_name%</code>, <code dir="auto">%original_path%</code>, <code dir="auto">%file_extension%</code>, <code dir="auto">%file_name%</code>.</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>If you use the <code dir="auto">dest</code> parameter, the configuration file should include the <code dir="auto">preserve_hierarchy</code> parameter with the <code dir="auto">true</code> value.</p> </section> </aside> <p>Example of the configuration file with both parameters:</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</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">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/conf/**/*.txt</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">dest</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/conf/**/%file_name%.properties</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/conf/**/%two_letters_code%/%file_name%.properties</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">type</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">properties</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/app/*.txt</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">dest</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/app/%file_name%.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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/res/values-%android_code%/%original_file_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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">type</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">android</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;files&#x22;: [ { &#x22;source&#x22;: &#x22;/conf/**/*.txt&#x22;, &#x22;dest&#x22;: &#x22;/conf/**/%file_name%.properties&#x22;, &#x22;translation&#x22;: &#x22;/conf/**/%two_letters_code%/%file_name%.properties&#x22;, &#x22;type&#x22;: &#x22;properties&#x22; }, { &#x22;source&#x22;: &#x22;/app/*.txt&#x22;, &#x22;dest&#x22;: &#x22;/app/%file_name%.xml&#x22;, &#x22;translation&#x22;: &#x22;/res/values-%android_code%/%original_file_name%&#x22;, &#x22;type&#x22;: &#x22;android&#x22; }]"><div></div></button></div></figure></div> <h2 id="changed-strings-update"><a href="#changed-strings-update">Changed Strings Update</a></h2> <p>You can use the <code dir="auto">update_option</code> parameter to preserve translations for changed strings during the file update. If it is not set, translations for changed strings will be lost. Useful for typo fixes and minor changes in source strings.</p> <p>Depending on the value, <code dir="auto">update_option</code> is used to preserve translations and preserve/remove validations of changed strings during file update.</p> <p>Acceptable values:</p> <ul> <li><code dir="auto">update_as_unapproved</code> - preserve translations of changed strings and remove validations of those translations if they exist</li> <li><code dir="auto">update_without_changes</code> - preserve translations and validations of changed strings</li> </ul> <p>Example of the configuration with the <code dir="auto">update_option</code> parameter:</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</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">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/*.csv</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/%three_letters_code%/%file_name%.csv</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">first_line_contains_header</span><span style="--0:#D9F5DD;--1:#111111">"</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">scheme</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">identifier,source_phrase,translation,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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">update_option</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">update_as_unapproved</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/**/*.xlsx</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/%three_letters_code%/folder/%file_name%.xlsx</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">update_option</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">update_without_changes</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;files&#x22;: [ { &#x22;source&#x22;: &#x22;/*.csv&#x22;, &#x22;translation&#x22;: &#x22;/%three_letters_code%/%file_name%.csv&#x22;, &#x22;first_line_contains_header&#x22;: true, &#x22;scheme&#x22;: &#x22;identifier,source_phrase,translation,context&#x22;, &#x22;update_option&#x22;: &#x22;update_as_unapproved&#x22; }, { &#x22;source&#x22;: &#x22;/**/*.xlsx&#x22;, &#x22;translation&#x22;: &#x22;/%three_letters_code%/folder/%file_name%.xlsx&#x22;, &#x22;update_option&#x22;: &#x22;update_without_changes&#x22; }]"><div></div></button></div></figure></div> <h2 id="custom-segmentation"><a href="#custom-segmentation">Custom Segmentation</a></h2> <p>Upload your XML, HTML, MD, or any other source files without a key-value structure with your own segmentation rules. If not specified, the pre-defined segmentation rules (SRX 2.0) are used for automatic content segmentation.</p> <p>Example of the configuration file custom segmentation:</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</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">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/emails/sample1.html</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/emails/%locale%/%original_file_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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">custom_segmentation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/rules/sample.srx.xml</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;files&#x22;: [ { &#x22;source&#x22;: &#x22;/emails/sample1.html&#x22;, &#x22;translation&#x22;: &#x22;/emails/%locale%/%original_file_name%&#x22;, &#x22;custom_segmentation&#x22;: &#x22;/rules/sample.srx.xml&#x22; }]"><div></div></button></div></figure></div> <h2 id="import-options"><a href="#import-options">Import Options</a></h2> <p>You can use additional parameters to customize the import process for specific file types.</p> <h3 id="xml-files-import-options"><a href="#xml-files-import-options">XML Files Import Options</a></h3> <table><thead><tr><th>Option</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="whitespace-nowrap">translate_content</code><br/><div class="text-gray-400">optional</div></td><td>bool</td><td>Defines whether to translate texts placed inside the tags.<br>Acceptable values are 0 or 1. Default is 1.</td></tr><tr><td><code class="whitespace-nowrap">translate_attributes</code><div class="text-gray-400">optional</div></td><td>bool</td><td>Defines whether to translate tags’ attributes.<br>Acceptable values are 0 or 1. Default is 1.</td></tr><tr><td><code class="whitespace-nowrap">content_segmentation</code><div class="text-gray-400">optional</div></td><td>bool</td><td><div><p>Defines whether to split long texts into smaller text segments.<br>Acceptable values are 0 or 1. Default is 1.<br><br> <b>Note!</b> When Content segmentation is enabled, the translation upload is handled by an experimental machine learning technology.</p></div></td></tr><tr><td><code class="whitespace-nowrap">translatable_elements</code><br/><div class="text-gray-400">optional</div></td><td>array</td><td><div><p>This is an array of strings, where each item is the XPaths to DOM element that should be imported.<br> Sample path: <code>/path/to/node</code> or <code>/path/to/attribute[@attr]</code><br><br> <b>Note!</b> If defined, the parameters <code>translate_content</code> and <code>translate_attributes</code> are not taken into account while importing.</p></div></td></tr></tbody></table> <p>Example of the configuration with additional parameters:</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml" class="wrap" style="--ecMaxLine:102ch"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: [</span></div></div><div class="ec-line" style="--ecIndent:2ch"><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" style="--ecIndent:4ch"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/app/sample1.xml</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line" style="--ecIndent:4ch"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/app/%locale%/%original_file_name%</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line" style="--ecIndent:4ch"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translate_attributes</span><span style="--0:#D9F5DD;--1:#111111">"</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" style="--ecIndent:4ch"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translate_content</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</span></div></div><div class="ec-line" style="--ecIndent:2ch"><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" style="--ecIndent:2ch"><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" style="--ecIndent:4ch"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/app/sample2.xml</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line" style="--ecIndent:4ch"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/app/%locale%/%original_file_name%</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">,</span></div></div><div class="ec-line" style="--ecIndent:4ch"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translatable_elements</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: [</span></div></div><div class="ec-line" style="--ecIndent:6ch"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/content/text</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">, </span><span style="--0:#809191;--1:#616671"># translatable texts are stored in 'text' nodes of parent node 'content'</span></div></div><div class="ec-line" style="--ecIndent:6ch"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/content/text[@value]</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#809191;--1:#616671"># translatable texts are stored in 'value' attribute of 'text' nodes</span></div></div><div class="ec-line" style="--ecIndent:4ch"><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" style="--ecIndent:2ch"><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;files&#x22;: [ { &#x22;source&#x22;: &#x22;/app/sample1.xml&#x22;, &#x22;translation&#x22;: &#x22;/app/%locale%/%original_file_name%&#x22;, &#x22;translate_attributes&#x22;: 1, &#x22;translate_content&#x22;: 0 }, { &#x22;source&#x22;: &#x22;/app/sample2.xml&#x22;, &#x22;translation&#x22;: &#x22;/app/%locale%/%original_file_name%&#x22;, &#x22;translatable_elements&#x22;: [ &#x22;/content/text&#x22;, # translatable texts are stored in &#x27;text&#x27; nodes of parent node &#x27;content&#x27; &#x22;/content/text[@value]&#x22; # translatable texts are stored in &#x27;value&#x27; attribute of &#x27;text&#x27; nodes ] }]"><div></div></button></div></figure></div> <h3 id="other-files-import-options"><a href="#other-files-import-options">Other Files Import Options</a></h3> <table><thead><tr><th>Option</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="whitespace-nowrap">content_segmentation</code><br/><div class="text-gray-400">optional</div></td><td>bool</td><td><div><p>Defines whether to split long texts into smaller text segments. Only for TXT, DOCX, DITA, IDML, MEDIAWIKI, HTML, Front Matter HTML, Markdown, Front Matter Markdown, XML, XLIFF, XLIFF 2.0<br> Acceptable values are 0 or 1. Default is 1.<br><br> <b>Note:</b> When Content segmentation is enabled, the translation upload is handled by an experimental machine learning technology.</p></div></td></tr></tbody></table> <p>Example of the configuration with additional parameters:</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</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">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/emails/sample1.html</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/emails/%locale%/%original_file_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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">content_segmentation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">1</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;files&#x22;: [ { &#x22;source&#x22;: &#x22;/emails/sample1.html&#x22;, &#x22;translation&#x22;: &#x22;/emails/%locale%/%original_file_name%&#x22;, &#x22;content_segmentation&#x22;: 1 }]"><div></div></button></div></figure></div> <h2 id="export-options"><a href="#export-options">Export Options</a></h2> <p>You can use additional parameters to customize the export process for specific file types.</p> <h3 id="java-properties-file-format"><a href="#java-properties-file-format">Java .properties File Format</a></h3> <h5 id="escape-quotes"><a href="#escape-quotes">Escape Quotes</a></h5> <p>Defines whether a single quote should be escaped by another single quote or backslash in exported translations. You can add the <code dir="auto">escape_quotes</code> per-file option.</p> <p>Acceptable values:</p> <ul> <li><code dir="auto">0</code> - do not escape single quote</li> <li><code dir="auto">1</code> - escape single quote with another single quote</li> <li><code dir="auto">2</code> - escape single quote with a backslash</li> <li><code dir="auto">3</code> - escape single quote with another single quote only in strings containing variables (default)</li> </ul> <h5 id="escape-special-characters"><a href="#escape-special-characters">Escape Special Characters</a></h5> <p>Defines whether any special characters (<code dir="auto">=</code>, <code dir="auto">:</code>, <code dir="auto">!</code> and <code dir="auto">#</code>) should be escaped by a backslash in exported translations. You can add the <code dir="auto">escape_special_characters</code> per-file option.</p> <p>Acceptable values:</p> <ul> <li><code dir="auto">0</code> - do not escape special characters</li> <li><code dir="auto">1</code> - escape special characters by a backslash (default)</li> </ul> <p>Example of the configuration:</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</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">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/en/strings.properties</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/%two_letters_code%/%original_file_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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">escape_quotes</span><span style="--0:#D9F5DD;--1:#111111">"</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">escape_special_characters</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#F78C6C;--1:#AA0982">0</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;files&#x22;: [ { &#x22;source&#x22;: &#x22;/en/strings.properties&#x22;, &#x22;translation&#x22;: &#x22;/%two_letters_code%/%original_file_name%&#x22;, &#x22;escape_quotes&#x22;: 1, &#x22;escape_special_characters&#x22;: 0 }]"><div></div></button></div></figure></div> <h2 id="configuration-file-for-vcs-integrations"><a href="#configuration-file-for-vcs-integrations">Configuration File for VCS Integrations</a></h2> <p>VCS integrations require the same configuration file as the CLI tool, meaning the same structure is supported. The only difference is that you should not store the project credentials in the file header for security reasons. Also, you can use a few additional parameters.</p> <h3 id="pull-request-title-and-labels"><a href="#pull-request-title-and-labels">Pull Request Title and Labels</a></h3> <p>The default pull request title is <code dir="auto">New Crowdin updates</code>. To specify your custom pull request title and add labels to the pull request, you can use the following parameters in the configuration file: <code dir="auto">pull_request_title</code>, <code dir="auto">pull_request_labels</code>.</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">pull_request_title</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Custom PR title</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"> </div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">pull_request_labels</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">crowdin</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">l10n</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;pull_request_title&#x22;: &#x22;Custom PR title&#x22;&#x22;pull_request_labels&#x22;: [ &#x22;crowdin&#x22;, &#x22;l10n&#x22;]"><div></div></button></div></figure></div> <aside aria-label="Limitations" 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> Limitations </p> <section class="starlight-aside__content"> <p>Pull request labels are not supported by the Bitbucket integration.</p> </section> </aside> <h3 id="commit-message"><a href="#commit-message">Commit Message</a></h3> <p>Each time translations are committed the default message is shown <code dir="auto">New translations {fileName} ({languageName})</code>. You can use the <code dir="auto">commit_message</code> parameter to add Git tags (e.g., to skip builds).</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">commit_message</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">[ci skip]</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;commit_message&#x22;: &#x22;[ci skip]&#x22;"><div></div></button></div></figure></div> <p>To replace the default commit message, use the <code dir="auto">append_commit_message</code> parameter with the <code dir="auto">false</code> value. You can also add two optional placeholders: <code dir="auto">%original_file_name%</code> and <code dir="auto">%language%</code> to use the appropriate file name and language variables accordingly.</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">commit_message</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">Fix: New translations %original_file_name% from Crowdin</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">append_commit_message</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#FF5874;--1:#A54A4A">false</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="&#x22;commit_message&#x22;: &#x22;Fix: New translations %original_file_name% from Crowdin&#x22;&#x22;append_commit_message&#x22;: false"><div></div></button></div></figure></div> <h3 id="export-languages"><a href="#export-languages">Export Languages</a></h3> <p>By default, all the languages are exported. If you need to export some specific languages, use the <code dir="auto">export_languages</code> parameter to specify them.</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">export_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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">uk</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">ja</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;export_languages&#x22;: [ &#x22;uk&#x22;, &#x22;ja&#x22;]"><div></div></button></div></figure></div> <h3 id="pull-request-assignee"><a href="#pull-request-assignee">Pull Request Assignee</a></h3> <p>If you need to assign a pull request to particular users, use the <code dir="auto">pull_request_assignees</code> parameter to specify them.</p> <p><strong>GitHub/GitHub Server:</strong></p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">pull_request_assignees</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">login1</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">login2</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;pull_request_assignees&#x22;: [ &#x22;login1&#x22;, &#x22;login2&#x22;]"><div></div></button></div></figure></div> <p><strong>GitLab/GitLab Self-Managed:</strong></p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">base_path</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">.</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">pull_request_assignees</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">user_id1</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">, </span><span style="--0:#809191;--1:#616671"># numeric ID</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">user_id2</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#809191;--1:#616671"># numeric ID</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;base_path&#x22;: &#x22;.&#x22;&#x22;pull_request_assignees&#x22;: [ &#x22;user_id1&#x22;, # numeric ID &#x22;user_id2&#x22; # numeric ID]"><div></div></button></div></figure></div> <aside aria-label="Limitations" 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> Limitations </p> <section class="starlight-aside__content"> <p>Pull request assignee parameter is not supported by the Bitbucket, Bitbucket Server, and Azure Repos integrations.</p> </section> </aside> <h3 id="pull-request-reviewer"><a href="#pull-request-reviewer">Pull Request Reviewer</a></h3> <p>If you need to request a pull request review from particular users, use the <code dir="auto">pull_request_reviewers</code> parameter to specify them.</p> <p><strong>GitHub/GitHub Server:</strong></p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">pull_request_reviewers</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">login1</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">login2</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;pull_request_reviewers&#x22;: [ &#x22;login1&#x22;, &#x22;login2&#x22;]"><div></div></button></div></figure></div> <p><strong>GitLab/GitLab Self-Managed:</strong></p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">pull_request_reviewers</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">user_id1</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">, </span><span style="--0:#809191;--1:#616671"># numeric ID</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">user_id2</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#809191;--1:#616671"># numeric ID</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;pull_request_reviewers&#x22;: [ &#x22;user_id1&#x22;, # numeric ID &#x22;user_id2&#x22; # numeric ID]"><div></div></button></div></figure></div> <p><strong>Bitbucket:</strong></p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">pull_request_reviewers</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">uuid1</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">, </span><span style="--0:#809191;--1:#616671"># user uuid</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">uuid2</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#809191;--1:#616671"># user uuid</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;pull_request_reviewers&#x22;: [ &#x22;uuid1&#x22;, # user uuid &#x22;uuid2&#x22; # user uuid]"><div></div></button></div></figure></div> <p><strong>Bitbucket Server:</strong></p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">pull_request_reviewers</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">username1</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">username2</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;pull_request_reviewers&#x22;: [ &#x22;username1&#x22;, &#x22;username2&#x22;]"><div></div></button></div></figure></div> <p><strong>Azure Repos:</strong></p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">pull_request_reviewers</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">guid1</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">, </span><span style="--0:#809191;--1:#616671"># user ID</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">guid2</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#809191;--1:#616671"># user ID</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;pull_request_reviewers&#x22;: [ &#x22;guid1&#x22;, # user ID &#x22;guid2&#x22; # user ID]"><div></div></button></div></figure></div> <h2 id="adding-labels-to-source-strings"><a href="#adding-labels-to-source-strings">Adding Labels to Source Strings</a></h2> <p>To add existing or new labels to the source strings, use the <code dir="auto">labels</code> parameter. Labels will be added to the source strings only during the initial upload to the Crowdin project.</p> <p>The strings uploaded to the Crowdin project before the use of the <code dir="auto">labels</code> parameter won’t be labeled. If you remove the label added during the initial upload directly in Crowdin, it won’t be re-added on the next syncs.</p> <p>Example:</p> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</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">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> : </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/resources/en/*.json</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> : </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/resources/%two_letters_code%/%original_file_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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">labels</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">android</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">emails</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;files&#x22;: [ { &#x22;source&#x22; : &#x22;/resources/en/*.json&#x22;, &#x22;translation&#x22; : &#x22;/resources/%two_letters_code%/%original_file_name%&#x22;, &#x22;labels&#x22; : [ &#x22;android&#x22;, &#x22;emails&#x22; ] }]"><div></div></button></div></figure></div> <aside aria-label="Limitations" 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> Limitations </p> <section class="starlight-aside__content"> <p>Label names can contain any special character except <code dir="auto">,</code>.</p> </section> </aside> <div class="read-more astro-szj46hnz"> <svg aria-hidden="true" class="icon astro-szj46hnz astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.17 2.06A13.1 13.1 0 0 0 19 1.87a12.94 12.94 0 0 0-7 2.05 12.94 12.94 0 0 0-7-2 13.1 13.1 0 0 0-2.17.19 1 1 0 0 0-.83 1v12a1 1 0 0 0 1.17 1 10.9 10.9 0 0 1 8.25 1.91l.12.07h.11a.91.91 0 0 0 .7 0h.11l.12-.07A10.899 10.899 0 0 1 20.83 16 1 1 0 0 0 22 15V3a1 1 0 0 0-.83-.94ZM11 15.35a12.87 12.87 0 0 0-6-1.48H4v-10c.333-.02.667-.02 1 0a10.86 10.86 0 0 1 6 1.8v9.68Zm9-1.44h-1a12.87 12.87 0 0 0-6 1.48V5.67a10.86 10.86 0 0 1 6-1.8c.333-.02.667-.02 1 0v10.04Zm1.17 4.15a13.098 13.098 0 0 0-2.17-.19 12.94 12.94 0 0 0-7 2.05 12.94 12.94 0 0 0-7-2.05c-.727.003-1.453.066-2.17.19A1 1 0 0 0 2 19.21a1 1 0 0 0 1.17.79 10.9 10.9 0 0 1 8.25 1.91 1 1 0 0 0 1.16 0A10.9 10.9 0 0 1 20.83 20a1 1 0 0 0 1.17-.79 1 1 0 0 0-.83-1.15Z"/></svg> <span class="astro-szj46hnz"><p>Read more about <a href="/project-settings/labels/">Labels</a>.</p></span> </div> <h2 id="language-mapping"><a href="#language-mapping">Language Mapping</a></h2> <p>Often software projects have custom names for locale directories. Crowdin allows you to map your own languages to be recognizable in your projects.</p> <p>Let’s say your locale directories are named <code dir="auto">en</code>, <code dir="auto">uk</code>, <code dir="auto">fr</code>, <code dir="auto">de</code>. All of them can be represented by the <code dir="auto">%two_letters_code%</code> placeholder. Still, you have one directory named <code dir="auto">zh_CH</code>. You can also override language codes for other placeholders like <code dir="auto">%android_code%</code>, <code dir="auto">%locale%</code>, etc.</p> <div class="read-more astro-szj46hnz"> <svg aria-hidden="true" class="icon astro-szj46hnz astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.17 2.06A13.1 13.1 0 0 0 19 1.87a12.94 12.94 0 0 0-7 2.05 12.94 12.94 0 0 0-7-2 13.1 13.1 0 0 0-2.17.19 1 1 0 0 0-.83 1v12a1 1 0 0 0 1.17 1 10.9 10.9 0 0 1 8.25 1.91l.12.07h.11a.91.91 0 0 0 .7 0h.11l.12-.07A10.899 10.899 0 0 1 20.83 16 1 1 0 0 0 22 15V3a1 1 0 0 0-.83-.94ZM11 15.35a12.87 12.87 0 0 0-6-1.48H4v-10c.333-.02.667-.02 1 0a10.86 10.86 0 0 1 6 1.8v9.68Zm9-1.44h-1a12.87 12.87 0 0 0-6 1.48V5.67a10.86 10.86 0 0 1 6-1.8c.333-.02.667-.02 1 0v10.04Zm1.17 4.15a13.098 13.098 0 0 0-2.17-.19 12.94 12.94 0 0 0-7 2.05 12.94 12.94 0 0 0-7-2.05c-.727.003-1.453.066-2.17.19A1 1 0 0 0 2 19.21a1 1 0 0 0 1.17.79 10.9 10.9 0 0 1 8.25 1.91 1 1 0 0 0 1.16 0A10.9 10.9 0 0 1 20.83 20a1 1 0 0 0 1.17-.79 1 1 0 0 0-.83-1.15Z"/></svg> <span class="astro-szj46hnz"><p>Read more about <a href="https://crowdin.github.io/crowdin-cli/advanced#languages-mapping-configuration" rel="nofollow" target="_blank">Language Mapping configuration for CLI</a>.</p></span> </div> <p>To make it work with Crowdin without changes in your project, you can set up Language Mapping via UI.</p> <ul> <li><a href="/project-settings/export/">Language mapping in Crowdin</a></li> <li><a href="/enterprise/project-settings/export/">Language mapping in Crowdin Enterprise</a></li> </ul> <h2 id="using-one-configuration-file-for-vcs-integrations-and-cli"><a href="#using-one-configuration-file-for-vcs-integrations-and-cli">Using One Configuration File for VCS Integrations and CLI</a></h2> <p>There are cases when it’s necessary to use VCS integration and CLI for one project. Mostly, in this kind of situation, you’d need to have two separate configuration files, one for VCS integration and another for CLI. However, you can use a single configuration file for both cases.</p> <p>Since the VCS integration configuration file doesn’t contain <code dir="auto">project_id</code> and <code dir="auto">api_token</code> credentials required for CLI, you can pass them directly in the command using the following parameters: <code dir="auto">-i/--project-id</code>, <code dir="auto">-T/--token</code>.</p> <p>As a result, your command for downloading translations via CLI will look like the following:</p> <div class="expressive-code"><figure class="frame is-terminal not-content"><figcaption class="header"><span class="title"></span><span class="sr-only">Terminal window</span></figcaption><pre data-language="shell"><code><div class="ec-line"><div class="code"><span style="--0:#82AAFF;--1:#3C63B3">crowdin</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3C63B3">download</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#82AAFF;--1:#3C63B3">-i</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3C63B3">{your-project-id}</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#82AAFF;--1:#3C63B3">-T</span><span style="--0:#D6DEEB;--1:#403F53"> </span><span style="--0:#ECC48D;--1:#3C63B3">{your-token}</span></div></div></code></pre><div class="copy"><button title="Copy to clipboard" data-copied="Copied!" data-code="crowdin download -i {your-project-id} -T {your-token}"><div></div></button></div></figure></div> <div class="read-more astro-szj46hnz"> <svg aria-hidden="true" class="icon astro-szj46hnz astro-c6vsoqas" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.17 2.06A13.1 13.1 0 0 0 19 1.87a12.94 12.94 0 0 0-7 2.05 12.94 12.94 0 0 0-7-2 13.1 13.1 0 0 0-2.17.19 1 1 0 0 0-.83 1v12a1 1 0 0 0 1.17 1 10.9 10.9 0 0 1 8.25 1.91l.12.07h.11a.91.91 0 0 0 .7 0h.11l.12-.07A10.899 10.899 0 0 1 20.83 16 1 1 0 0 0 22 15V3a1 1 0 0 0-.83-.94ZM11 15.35a12.87 12.87 0 0 0-6-1.48H4v-10c.333-.02.667-.02 1 0a10.86 10.86 0 0 1 6 1.8v9.68Zm9-1.44h-1a12.87 12.87 0 0 0-6 1.48V5.67a10.86 10.86 0 0 1 6-1.8c.333-.02.667-.02 1 0v10.04Zm1.17 4.15a13.098 13.098 0 0 0-2.17-.19 12.94 12.94 0 0 0-7 2.05 12.94 12.94 0 0 0-7-2.05c-.727.003-1.453.066-2.17.19A1 1 0 0 0 2 19.21a1 1 0 0 0 1.17.79 10.9 10.9 0 0 1 8.25 1.91 1 1 0 0 0 1.16 0A10.9 10.9 0 0 1 20.83 20a1 1 0 0 0 1.17-.79 1 1 0 0 0-.83-1.15Z"/></svg> <span class="astro-szj46hnz"><p>Alternatively, you may use <a href="#api-credentials-from-environment-variables">Environment Variables</a> or <a href="https://crowdin.github.io/crowdin-cli/configuration#split-project-configuration-and-api-credentials" rel="nofollow" target="_blank">Split Project Configuration and API Credentials</a>.</p></span> </div> <h2 id="example-configurations"><a href="#example-configurations">Example Configurations</a></h2> <h5 id="uploading-csv-files"><a href="#uploading-csv-files">Uploading CSV files</a></h5> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">project_id</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">projectId</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">api_token</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">personal-access-token</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">base_path</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">.</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">base_url</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">https://api.crowdin.com</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"> </div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</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">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/*.csv</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/%two_letters_code%/%original_file_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:#809191;--1:#616671"># Specifies whether first line should be imported or it contains columns headers</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">first_line_contains_header</span><span style="--0:#D9F5DD;--1:#111111">"</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:#809191;--1:#616671"># Used only when uploading CSV file to define data columns mapping</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">scheme</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">identifier,source_phrase,translation,context,max_length</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;project_id&#x22;: &#x22;projectId&#x22;&#x22;api_token&#x22;: &#x22;personal-access-token&#x22;&#x22;base_path&#x22;: &#x22;.&#x22;&#x22;base_url&#x22;: &#x22;https://api.crowdin.com&#x22;&#x22;files&#x22;: [ { &#x22;source&#x22;: &#x22;/*.csv&#x22;, &#x22;translation&#x22;: &#x22;/%two_letters_code%/%original_file_name%&#x22;, # Specifies whether first line should be imported or it contains columns headers &#x22;first_line_contains_header&#x22;: true, # Used only when uploading CSV file to define data columns mapping &#x22;scheme&#x22;: &#x22;identifier,source_phrase,translation,context,max_length&#x22; }]"><div></div></button></div></figure></div> <h5 id="gettext-project"><a href="#gettext-project">GetText Project</a></h5> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">project_id</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">projectId</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">api_token</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">personal-access-token</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">base_path</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">.</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">base_url</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">https://api.crowdin.com</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"> </div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</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">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> : </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/locale/en/**/*.po</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> : </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/locale/%two_letters_code%/LC_MESSAGES/%original_file_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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">languages_mapping</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">two_letters_code</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">zh-CN</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> : </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">zh_CH</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">fr-QC</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">fr</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;project_id&#x22;: &#x22;projectId&#x22;&#x22;api_token&#x22;: &#x22;personal-access-token&#x22;&#x22;base_path&#x22;: &#x22;.&#x22;&#x22;base_url&#x22;: &#x22;https://api.crowdin.com&#x22;&#x22;files&#x22; : [ { &#x22;source&#x22; : &#x22;/locale/en/**/*.po&#x22;, &#x22;translation&#x22; : &#x22;/locale/%two_letters_code%/LC_MESSAGES/%original_file_name%&#x22;, &#x22;languages_mapping&#x22; : { &#x22;two_letters_code&#x22; : { &#x22;zh-CN&#x22; : &#x22;zh_CH&#x22;, &#x22;fr-QC&#x22;: &#x22;fr&#x22; } } }]"><div></div></button></div></figure></div> <h5 id="android-project"><a href="#android-project">Android Project</a></h5> <div class="expressive-code"><figure class="frame has-title not-content"><figcaption class="header"><span class="title">crowdin.yml</span></figcaption><pre data-language="yml"><code><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">project_id</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">projectId</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">api_token</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">personal-access-token</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">base_path</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">.</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">base_url</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53">: </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">https://api.crowdin.com</span><span style="--0:#D9F5DD;--1:#111111">"</span></div></div><div class="ec-line"><div class="code"> </div></div><div class="ec-line"><div class="code"><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">files</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">{</span></div></div><div class="ec-line"><div class="code"><span class="indent"> </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">source</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> : </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/res/values/*.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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">translation</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> : </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">/res/values-%android_code%/%original_file_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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">languages_mapping</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">android_code</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:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">de</span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#D6DEEB;--1:#403F53"> : </span><span style="--0:#D9F5DD;--1:#111111">"</span><span style="--0:#ECC48D;--1:#9B504E">de</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;project_id&#x22;: &#x22;projectId&#x22;&#x22;api_token&#x22;: &#x22;personal-access-token&#x22;&#x22;base_path&#x22;: &#x22;.&#x22;&#x22;base_url&#x22;: &#x22;https://api.crowdin.com&#x22;&#x22;files&#x22; : [ { &#x22;source&#x22; : &#x22;/res/values/*.xml&#x22;, &#x22;translation&#x22; : &#x22;/res/values-%android_code%/%original_file_name%&#x22;, &#x22;languages_mapping&#x22; : { &#x22;android_code&#x22; : { &#x22;de&#x22; : &#x22;de&#x22; } } }]"><div></div></button></div></figure></div> </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/dev-tools/configuration-file.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