<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/ukrainian/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More ]]>
            </title>
            <link>https://www.freecodecamp.org/ukrainian/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 18 Apr 2026 19:02:28 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/ukrainian/news/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ freeCodeCamp святкує 10 років + головні оновлення ]]>
                </title>
                <description>
                    <![CDATA[ Рівно 10 років тому я сів у своїй квартирі в Сан-Франциско і написав перші кілька сотень рядків коду для freeCodeCamp. Тоді я ще не знав, що freeCodeCamp швидко перетвориться на глобальну спільноту зайнятих дорослих, які вчаться програмувати разом. Багато з цих кемперів — як тепер ми називаємо себе — стали ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/freecodecamp-10-rokiv/</link>
                <guid isPermaLink="false">67224cea11de84045fc3bc9b</guid>
                
                    <category>
                        <![CDATA[ спільнота ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Anastasiia Buievych ]]>
                </dc:creator>
                <pubDate>Sun, 03 Nov 2024 14:25:05 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2024/10/767f41f9-70e6-4e1c-b0d5-1927a925c9cc.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/freecodecamp-turns-10-major-curriculum-updates/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">freeCodeCamp Turns 10 + Major Certification Updates</a>
      </p><p>Рівно 10 років тому я сів у своїй квартирі в Сан-Франциско і написав перші кілька сотень рядків коду для freeCodeCamp.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730133437567/a29ae1ca-0350-4e94-b57a-296eb35dae6f.jpeg" class="kg-image" alt="Невеличкий офіс Квінсі" width="485" height="485" loading="lazy"></figure><p>Тоді я ще не знав, що freeCodeCamp швидко перетвориться на глобальну спільноту зайнятих дорослих, які вчаться програмувати разом.</p><p>Багато з цих кемперів — як тепер ми називаємо себе — стали програмістами. І багато кемперів також зробили свій внесок до відкритої кодової бази fCC.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730133483889/9fe0f108-361f-4384-bbb9-774b9bbe7fe2.webp" class="kg-image" alt="Кемпери на заході freeCodeCamp в Нью-Йорку" width="960" height="528" loading="lazy"></figure><p>Протягом цих 10 років ми створили:</p><ol><li>Інтерактивну базову навчальну програму на 3000 годин, яка вчить математики, програмування та комп’ютерних наук.</li><li>Бібліотеку, яка містить більш ніж 12 000 покрокових довідників — і десятки посібників — на нашій платформі для публікацій, <a href="https://www.freecodecamp.org/news">freecodecamp.org/news</a>.</li><li>YouTube-канал з більш ніж 1000 безоплатних курсів. Лише кілька днів тому ми досягли десяти мільйонів підписників.</li><li>Найдобріший форум на планеті та схожий сервер на Discord.</li></ol><p>Команда виросла з мене одного до штату з 35 вчителів та інженерів. І це лише вершина айсберга. Велика частина роботи виконується самою спільнотою. Щодня волонтери щось роблять, щоб покращити нашу кодову базу, створити нові ресурси для навчання та допомогти один одному на форумі.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730133557095/089e4ec6-16aa-49df-81c3-6b27c3001ed4.jpeg" class="kg-image" alt="знімок екрану репозиторія freecodecamp на github" width="607" height="515" loading="lazy"></figure><p>Ми лише починаємо. Тож замість сентиментального нарису про <strong>перші</strong> 10 років freeCodeCamp, ми зосередимося на наших планах на <strong>наступні</strong> 10 років.</p><p>Адже місія нашої благодійної організації — створити безоплатні навчальні ресурси, які допомагають людям вивчати математику, програмування та комп’ютерні науки. Попереду <strong>багато</strong> роботи, яку потрібно виконати.</p><p>У цій статті я викладу наші основні ініціативи на наступне десятиліття, а також поділюсь деякими значними покращеннями — деякі з них з’являться до Різдва.</p><h2 id="-"><strong>Одна сертифікація, щоб керувати всім</strong></h2><p>Найголовніша новина — ми об’єднуємо більшу частину теперішньої навчальної програми в одну комплексну сертифікацію «Сертифікований full stack розробник» (CFSD). До того ж ми розробляємо декілька нових комплексних сертифікацій з нуля.</p><p>Ми черпали натхнення від усталених некомерційних організацій розробників, серед яких CompTIA та (ISC)². Ми змінюємо наші сертифікації, щоб вони більше нагадували усталені сертифікації індустрії.</p><p>Наші нові сертифікації:</p><ul><li>будуть ще більш комплексними;</li><li>включатимуть підсумковий екзамен;</li><li>включатимуть кінцевий проєкт;</li><li>будуть дійсними протягом 3 років, з можливістю оновлення.</li></ul><p>Як і все, що створює freeCodeCamp, ці сертифікації залишаться <strong>повністю безоплатними</strong>.</p><p>Навчальна програма сертифікації «Сертифікований full stack розробник» охоплюватиме такі теми:</p><ul><li>семантичний HTML;</li><li>доступність;</li><li>основи CSS;</li><li>CSS Flexbox;</li><li>дизайн для розробників;</li><li>типографія;</li><li>редактори коду;</li><li>основи JavaScript;</li><li>функціональне програмування;</li><li>функції вищого порядку та зворотні виклики;</li><li>маніпуляція DOM та події;</li><li>вебстандарти;</li><li>основи React;</li><li>основи TypeScript;</li><li>поняття тестування;</li><li>скрипти Bash;</li><li>SQL та реляційні бази даних;</li><li>Git &amp; GitHub;</li><li>безпека та приватність;</li><li>Node.js;</li><li>Express.js;</li><li>основи Python;</li><li>алгоритмічне мислення;</li><li>структури даних;</li><li>об’єктноорієнтоване програмування;</li><li>динамічне програмування;</li><li>безпека для веброзробників;</li><li>інструменти та розробка;</li><li>робота з API;</li><li>основи інженерії штучного інтелекту;</li><li>як отримати роботу розробника;</li><li>та багато іншого.</li></ul><p>За численними проханнями ми будемо охоплювати <strong>набагато</strong> більше теорії одразу в навчальній програмі.</p><p>Раніше наші сертифікації на 100% концентрувались на розробці проєктів. Ми отримали багато зворотного зв’язку щодо нашого підходу «навчання через практику», і що багато хто бажає більшої кількості теорії.</p><p>Більше вам не доведеться доповнювати основну навчальну програму freeCodeCamp теоретичними відео або посібниками. Тепер ми будемо охоплювати всю необхідну теорію.</p><p>Ми додамо короткі відеолекції, спікерами яких є команда з освітнього дизайну freeCodeCamp (серед яких Боу Карнес та Аня Кубов). Для кемперів, які віддають перевагу читанню, буде доступний транскрипт до всіх лекцій.</p><p>Ми також додамо багато тестів, щоб ви могли повторити теорію та перевірити, наскільки зрозуміли матеріал. Разом із нашою вбудованою системою спеціального повторення, такий підхід має значно покращити запам’ятовування ключових понять і технік програмування.</p><p>Тепер ви починатимете програмувати з чистого аркуша значно раніше, щоб зменшити кількість втручання. Для цього будуть лабораторні роботи.</p><p>Ось повний зміст сертифікації «Сертифікований full stack розробник». Це справжній виклик:</p><ul><li><strong><strong>64 </strong>практичні завдання</strong>: інтерактивні покрокові курси від HTML до SQL і Python;</li><li><strong><strong>513 </strong>лекцій</strong>: короткі відео, що висвітлюють поняття комп’ютерної науки, з питаннями множинного вибору для перевірки;</li><li><strong><strong>83 </strong>лабораторні роботи</strong>: проєкти, у яких ви почнете з чистого редактора та набору тестів, і маєте побудувати свій проєкт так, щоб усі тести були успішними;</li><li><strong><strong>62 </strong>сторінки з повторенням</strong>: комплексні списки тем з кожного модуля, щоб ви могли підготуватись до тестів та екзаменів;</li><li><strong><strong>66 </strong>тестів</strong> та <strong><strong>6 </strong>підготовчих екзаменів</strong>: щоб підтвердити розуміння понять та інструментів;</li><li><strong><strong>1 </strong>головний<strong> </strong>проєкт</strong>: великий унікальний проєкт, який ви створите для свого портфоліо під керівництвом викладачів спільноти freeCodeCamp;</li><li><strong><strong>1 </strong>кінцевий<strong> </strong>екзамен</strong>: комплексний сертифікаційний екзамен з 90 запитань, що проводиться в екзаменаційному середовищі freeCodeCamp.</li></ul><p>Після всієї роботи ви зможете скласти кінцевий екзамен. Ми створили власне екзаменаційне середовище, де ви зможете скласти екзамен зі всього, що вивчили.</p><p>Якщо ви не складете екзамен, ви зможете скласти його ще раз (раз на 24 години, допоки не складете). Кожен екзамен буде генеруватись з великого корпусу запитань.</p><p>Можливо, ви чули страшні історії від людей, які складали екзамени онлайн та яких несправедливо звинуватили у шахрайстві. Ми ретельно продумали, як будемо дотримуватись кодексу академічної доброчесності. Для цього завжди буде людина-в-циклі.</p><p>Не буде автоматичних дискваліфікацій через те, що «ви встали зі стільця, бо ваша дитина заплакала». Ми будемо враховувати всі нюанси під час проведення екзаменів.</p><p>Після того, як ви складете екзамен, ви отримаєте безоплатний підтверджений сертифікат із серійним номером, який ви зможете додати до свого резюме й LinkedIn. Він залишатиметься дійсним протягом трьох років, після чого ви зможете пройти безоплатне навчання з метою повторної сертифікації.</p><p>Ось 3-хвилинне відео, яке ознайомить вас з деякими великими оновленнями навчальної програми freeCodeCamp.</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.25%;" class="fluid-width-video-wrapper">
            <iframe width="560" height="315" src="https://www.youtube.com/embed/24ubTRtvNY0" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variant-alternates: inherit; font-variant-ligatures: inherit; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-feature-settings: inherit; font-optical-sizing: inherit; font-variation-settings: inherit; font-size: 22px; vertical-align: middle; aspect-ratio: 16 / 9; width: 720px; height: auto;" name="fitvid0"></iframe>
          </div>
        </div>
      </figure><h2 id="--1"><strong>Ми також розробляємо три інші сертифікації</strong></h2><p>Після виходу нової сертифікації «Сертифікований full stack розробник», наша команда з освітнього дизайну зосередить увагу на створенні трьох додаткових сертифікацій:</p><h3 id="-fcc-cmle-"><strong>Сертифікований інженер машинного навчання (fCC-CMLE)</strong></h3><p>Ця сертифікація передбачатиме вивчення Python та багатьох бібліотек. Ви вивчатимете велику кількість математики та теорії. Багато проєктів передбачатимуть створення власних моделей. Кайлі Йін вже працює з інженерами машинного навчання, щоб допомогти з розробкою. Ми плануємо опублікувати певну частину у 2025 році.</p><h3 id="-fcc-csse-"><strong>Сертифікований інженер системного програмного забезпечення (fCC-CSSE)</strong></h3><p>Ця сертифікація охоплюватиме низькорівневе програмування та високопродуктивні обчислення. Ви навчитеся програмувати на C й C++, і створите кілька проєктів (серед яких власний компілятор і власна пошукова система). Ми плануємо опублікувати певну частину у 2026 році.</p><h3 id="-data-scientist-fcc-cds-"><strong>Сертифікований data scientist (fCC-CDS)</strong></h3><p>Ми працюємо над комплексною навчальною програмою з науки про дані вже декілька років. Можливо, ви знаєте, що freeCodeCamp вже має багато популярних курсів з інструментів науки про дані (наприклад, Python, R і статистичні пакети) на YouTube.</p><p>Виклик у викладанні науки про дані полягає у величезній кількості математики, яка присутня в галузі. Нам також потрібно розробити проєктно-орієнтоване навчання, яке ми можемо оцінити програмно.</p><p>Наша мета — запропонувати найкращу освітню програму з науки про дані, доступну поза межами PhD. Це буде найбільшою проблемою з усіх. Але ми до цього готові.</p><p>Ми плануємо опублікувати певну частину у 2027 році.</p><h2 id="--2"><strong>Коли ми отримаємо більше інформації про сертифікації та навчальні курси?</strong></h2><p>Ми працюємо над основними темами оновленої навчальної програми і плануємо опублікувати деякі з них у 2025 році.</p><h2 id="-freecodecamp"><strong>Що станеться з поточними сертифікаціями freeCodeCamp?</strong></h2><p>freeCodeCamp має хорошу традицію зберігати старі курси зі застарілих сертифікацій. Цього разу нічого не змінюється.</p><p>Ми заохочуємо вас перейти на нову сертифікацію «Сертифікований full stack розробник» як тільки вона стане доступною цього Різдва. Можливо, ви вже виконали деякі з проєктів, оскільки багато з них збереглись зі старих сертифікацій.</p><p>Якщо ви вже виконали половину старої сертифікації та хочете продовжити свій прогрес там, ви можете це зробити.</p><h2 id="--3"><strong>Старі сертифікати втратять чинність?</strong></h2><p>Так. Усі застарілі сертифікати втратять чинність 31 грудня 2027 року. Це також стосується всіх сертифікатів, які ви отримали раніше.</p><p>Ми хотіли дати всім достатньо часу на використання поточних сертифікатів, перш ніж отримати сертифікацію «Сертифікований full stack розробник». І ми вважаємо, що достатньо трьох років.</p><p>Ми додали цей термін дії до всіх сертифікатів freeCodeCamp.</p><p>Надалі, коли ви отримаєте сертифікат «Сертифікований full stack розробник» або будь-який з трьох інших, він буде дійсний протягом трьох років з дати його отримання.</p><p>Знову ж таки, ми розробляємо програму безперервної освіти, яку ви зможете використати через три роки, щоб поновити сертифікат. І знову ж таки, все це буде безоплатно.</p><h2 id="-freecodecamp-"><strong>Чому freeCodeCamp вимагає екзамени та додає терміни дії до сертифікатів?</strong></h2><p>Ми робимо так, щоб наші сертифікати відповідали нормам у галузі технологій. Усі основні сертифікації вимагають складання сертифікаційного екзамену та мають термін дії 3 роки.</p><p>Наша мета полягає в тому, щоб сертифікати freeCodeCamp були максимально загальноприйнятими, аби полегшити розуміння роботодавцями.</p><h2 id="-freecodecamp--1"><strong>Чи планує freeCodeCamp займатися рекрутингом або працевлаштуванням?</strong></h2><p>У нас немає планів щодо цього. Місія нашої благодійної організації проста: створювати безоплатні навчальні ресурси. Ми плануємо зберегти нашу команду викладачів маленькою і зосередженою.</p><h2 id="--4"><strong>Наскільки навчальні курси будуть схожими?</strong></h2><p>Деякі з сертифікацій матимуть спільні проєкти та лекції. Наприклад, якщо ви закінчите курс «Вступ до Python» під час отримання сертифікації «Сертифікований full stack розробник», вам не потрібно буде повторювати його, щоб отримати сертифікацію «Сертифікований інженер машинного навчання».</p><h2 id="--5"><strong>Мої старі сертифікати залишаться онлайн? Посилання для перевірки продовжать працювати?</strong></h2><p>Протерміновані сертифікати будуть доступними, а прямі посилання на них працюватимуть. Вони будуть чітко позначені як «Термін закінчився [дата]», доки ви не поновите їх. Знову ж таки, це станеться не раніше 31 грудня 2027 року.</p><h2 id="-11-freecodecamp-org-learn"><strong>Що станеться з 11 сертифікаціями, які наразі розташовані на <a href="http://freecodecamp.org/learn">freecodecamp.org/learn</a>?</strong></h2><p>Вони будуть доступними принаймні ще декілька років, й позначені як застарілі сертифікації. Більшість курсів буде перероблено та вдосконалено, щоб стати частиною нових сертифікацій.</p><h2 id="--6"><strong>Мені доведеться знову виконувати вже виконані проєкти?</strong></h2><p>Деякі курси зі старих сертифікацій будуть в нових. У більшості випадків вам не доведеться знову виконувати проєкти, які ви вже завершили. Якщо ви вже побудували деякі проєкти, то є велика ймовірність, що розділи нових сертифікацій будуть позначені як завершені, коли ви їх переглянете.</p><h2 id="-rust-java-nosql"><strong>Що стосується викладання таких мов програмування, як Rust і Java, або інструментів баз даних NoSQL?</strong></h2><p>Ми зосереджуємо основну навчальну програму на найпопулярніших інструментах, щоб допомогти кемперам стати розробниками. Тобто Python, JavaScript, SQL і такі інструменти, як Git та Linux.</p><p>У нас є безліч відеокурсів з інших популярних інструментів на YouTube-каналі, а також серед публікацій спільноти freeCodeCamp. Ми продовжимо викладати їх як додаткові теми для всіх, хто хоче їх вивчати.</p><h2 id="--7"><strong>Як справи з навчальною програмою для вивчення англійської мови?</strong></h2><p>Ми активно працюємо над створенням інтерактивної навчальної програми для вивчення англійської мови, щоб допомогти кемперам покращити їхні знання.</p><p>Ми проводимо навчання через комбінацію відео та інтерактивних завдань, за якими слідує офіційний сертифікаційний екзамен.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730133715267/450940c6-2799-48ac-8f8d-dbc4eece8951.jpeg" class="kg-image" alt="Знімок екрану інтерфейсу користувача навчальної програми з вивчення англійської мови на freeCodeCamp" width="1274" height="792" loading="lazy"></figure><p>Зараз ми завершуємо працювати над рівнем A2 і починаємо роботу над B1.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730133738714/206d46e8-7a31-4229-b673-5c11e386cfee.png" class="kg-image" alt="Діаграма рівнів CEFR" width="1024" height="768" loading="lazy"></figure><h2 id="--8"><strong>Як справи з програмою здобуття безоплатного наукового ступеня?</strong></h2><p>Ми робимо стійкий прогрес зі ступенем молодшого спеціаліста з математики та ступеня бакалавра з комп’ютерних наук. Ми вже розробили 2 курси з математики і активно працюємо над іншими 38 курсами університетського рівня, а також їхніми лекціями, лабораторними роботами та екзаменами.</p><p>freeCodeCamp має маленьку команду освітніх дизайнерів, і зараз ми зосереджені на курсах для сертифікації «Сертифікований full stack розробник» та програмі для вивчення англійської мови. Як тільки ми їх завершимо, ми змістимо фокус на програми зі здобуття ступеня, щоб пришвидшити їхній розвиток.</p><h2 id="10-"><strong>10 років — це мало.</strong></h2><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1730133954038/aeb1874c-1804-4910-8088-c262aa95c5cf.jpeg" class="kg-image" alt="Деякі члени команди freeCodeCamp перед бібліотекою в Далласі" width="1600" height="1200" loading="lazy"></figure><p>Дивовижно, скільки ми досягли як спільнота всього за 10 років.</p><ul><li>Безоплатна навчальна програма на 3000 години з інтерактивним навчальним матеріалом.</li><li>Тисячі додаткових курсів, книг і підручників.</li><li>Десятки тисяч кемперів, які стали розробниками.</li><li>Десятки тисяч волонтерів, які отримують досвід, ділячись своїми часом і талантом через відкритий код, тим самим допомагаючи іншим.</li></ul><p>І ми лише розпочинаємо.</p><p>Я закликаю вас долучитись до глобальної спільноти freeCodeCamp. Ви можете переглянути <a href="https://www.freecodecamp.org/news/freecodecamps-top-open-source-contributors-of-2024/">список найактивніших волонтерів за 2024 рік</a>, а також <a href="https://contribute.freecodecamp.org/intro/">посібник для волонтерів</a>, якщо хочете стати частиною спільноти.</p><p>Я також пропоную <a href="https://www.freecodecamp.org/ukrainian/donate/">стати донором</a>. А якщо ви вже підтримуєте нас щомісяця та хочете зробити подарунок наприкінці року, ми будемо дуже раді. Ось <a href="https://www.freecodecamp.org/news/how-to-donate-to-free-code-camp/">декілька способів зробити донат</a>.</p><p>Якщо у вас є будь-які запитання щодо підтримки місії нашої організації, або вам просто треба квитанція про донат, будь ласка, напишіть на <a href="https://www.freecodecamp.org/ukrainian/news/p/a8252bac-dd99-417d-bdc4-981faabd27e0/quincy@freecodecamp.org">quincy@freecodecamp.org</a>.</p><p>За наступні 10 років.</p><p>— Квінсі</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Python .sort(): як відсортувати список у Python? ]]>
                </title>
                <description>
                    <![CDATA[ У цій статті ви дізнаєтесь, як використовувати метод списку sort() у Python. Ви також дізнаєтесь про інший спосіб сортування в Python за допомогою функції  sorted(), щоб зрозуміти, чим вона відрізняється від sort(). Ви знатимете основи сортування списку в Python і як налаштувати сортування відповідно до своїх потреб. Що ми ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/python-sort-yak-vidsortuvaty-spysok-u-python/</link>
                <guid isPermaLink="false">66d94e77a2d90904c648dfd9</guid>
                
                    <category>
                        <![CDATA[ python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Anastasiia Buievych ]]>
                </dc:creator>
                <pubDate>Thu, 05 Sep 2024 09:35:22 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2024/09/pexels-ken-tomita-389818.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/python-sort-how-to-sort-a-list-in-python/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Python .sort() – How to Sort a List in Python</a>
      </p><p>У цій статті ви дізнаєтесь, як використовувати метод списку <code>sort()</code> у Python.</p><p>Ви також дізнаєтесь про інший спосіб сортування в Python за допомогою функції <code>sorted()</code>, щоб зрозуміти, чим вона відрізняється від <code>sort()</code>.</p><p>Ви знатимете основи сортування списку в Python і як налаштувати сортування відповідно до своїх потреб.</p><p>Що ми розглянемо:</p><ol><li><a href="#метод-sort-огляд-синтаксису">Синтаксис методу <code>sort</code></a>.</li><li><a href="#як-відсортувати-елементи-списку-в-порядку-зростання-за-допомогою-методу-sort">Сортування елементів списку в порядку зростання</a>.</li><li><a href="#як-відсортувати-елементи-списку-в-порядку-спадання-за-допомогою-методу-sort">Сортування елементів списку в порядку спадання</a>.</li><li><a href="#як-відсортувати-елементи-списку-за-допомогою-параметра-key-з-методом-sort">Сортування елементів списку за допомогою аргументу <code>key</code></a>.</li><li><a href="#різниця-між-sort-та-sorted">Різниця між <code>sort()</code> та <code>sorted()</code></a>.<br>5.1. &nbsp;<a href="#коли-використовувати-sort-та-sorted">Коли використовувати <code>sort()</code> та <code>sorted()</code></a>.</li></ol><!--kg-card-begin: html--><h2 id="метод-sort-огляд-синтаксису">Метод sort(). Огляд синтаксису</h2><!--kg-card-end: html--><p>Метод <code>sort()</code> — один зі способів, за допомогою якого можна відсортувати список у Python.</p><p>При використанні <code>sort()</code> список сортується <em>на місці</em>. Це означає, що початковий список безпосередньо змінюється. Зокрема, змінюється початковий порядок елементів.</p><p>Загальний синтаксис методу <code>sort()</code> виглядає так:</p><pre><code class="language-python">назва_списку.sort(reverse=..., key=... )</code></pre><p>Розглянемо деталі:</p><ul><li><code>назва_списку</code> — назва списку, з яким ви працюєте;</li><li><code>sort()</code> — один з методів списку Python для сортування та зміни списку. Він сортує елементи списку або в <em>порядку зростання</em>, або в <em>порядку спадання</em>;</li><li><code>sort()</code> приймає два <strong>необов’язкові</strong> параметри;</li><li><code>reverse</code> — перший необов’язковий параметр. Він визначає, як буде відсортований список: в порядку зростання чи спадання. Приймає логічне значення (тобто True або False). Значення за замовчуванням — <strong>False</strong>, тобто список сортується в порядку зростання. Якщо встановити його значення на True, то список сортується навпаки: у порядку спадання;</li><li><code>key</code> — другий необов’язковий параметр. Він приймає функцію або метод, які використовуються для визначення будь-яких можливих детальних критеріїв сортування.</li></ul><p>Метод <code>sort()</code> повертає <code>None</code> (тобто повернутого значення немає), оскільки він просто змінює початковий список. Він <strong>не</strong> повертає новий список.</p><!--kg-card-begin: html--><h2 id="як-відсортувати-елементи-списку-в-порядку-зростання-за-допомогою-методу-sort">Як відсортувати елементи списку в порядку зростання за допомогою методу sort()</h2><!--kg-card-end: html--><p>Як вже згадувалося раніше, <code>sort()</code> сортує елементи списку в порядку зростання за замовчуванням.</p><p>Це означає, що елементи розташовуються від найменшого до найбільшого значення.</p><p>Найменше значення знаходиться зліва, а найбільше — справа.</p><p>Загальний синтаксис виглядає приблизно так:</p><pre><code class="language-python">назва_списку.sort()</code></pre><p>Розглянемо приклад, де відсортуємо список цілих чисел:</p><pre><code class="language-python"># список чисел
мої_числа = [10, 8, 3, 22, 33, 7, 11, 100, 54]

# відсортуємо список на місці у порядку зростання
мої_числа.sort()

# надрукуємо змінений список
print(мої_числа)

# вихідні дані

# [3, 7, 8, 10, 11, 22, 33, 54, 100]</code></pre><p>У прикладі вище числа сортуються від найменшого до найбільшого.</p><p>Так само можна зробити зі списком рядків:</p><pre><code class="language-python"># список рядків
мови_програмування = ["Python", "Swift", "Java", "C++", "Go", "Rust"]

# відсортуємо список на місці в алфавітному порядку
мови_програмування.sort()

# надрукуємо змінений список
print(мови_програмування)

# вихідні дані

# ['C++', 'Go', 'Java', 'Python', 'Rust', 'Swift']</code></pre><p>У цьому випадку кожен рядок, що міститься у списку, був відсортований в алфавітному порядку.</p><p>Як ви побачили в обох прикладах, початкові списки були змінені.</p><!--kg-card-begin: html--><h2 id="як-відсортувати-елементи-списку-в-порядку-спадання-за-допомогою-методу-sort">Як відсортувати елементи списку в порядку спадання за допомогою методу `sort()`</h2><!--kg-card-end: html--><p>Порядок спадання протилежний порядку зростання: елементи розташовуються від найбільшого до найменшого значення.</p><p>Щоб відсортувати елементи списку в порядку спадання, потрібно використати необов’язковий параметр <code>reverse</code> з методом <code>sort()</code>, і встановити значення <code>True</code>.</p><p>Ось так виглядає загальний синтаксис:</p><pre><code class="language-python">назва_списку.sort(reverse=True)
</code></pre><p>Використаємо приклад з попереднього розділу, але цього разу зробимо так, щоб числа були відсортовані в зворотному порядку:</p><pre><code class="language-python"># список чисел
мої_числа = [10, 8, 3, 22, 33, 7, 11, 100, 54]

# відсортуємо список на місці в порядку спадання
мої_числа.sort(reverse=True)

# надрукуємо змінений список
print(мої_числа)

# вихідні дані

# [100, 54, 33, 22, 11, 10, 8, 7, 3]</code></pre><p>Тепер всі числа розташовані у зворотному порядку; найбільше значення зліва, а найменше — справа.</p><p>Так само можна зробити зі списком рядків.</p><pre><code class="language-python"># список рядків
мови_програмування = ["Python", "Swift", "Java", "C++", "Go", "Rust"]

# відсортуємо список на місці у зворотному алфавітному порядку
мови_програмування.sort(reverse=True)

# надрукуємо змінений список
print(мови_програмування)

# вихідні дані

# ['Swift', 'Rust', 'Python', 'Java', 'Go', 'C++']</code></pre><p>Тепер елементи списку розташовані у зворотному алфавітному порядку.</p><!--kg-card-begin: html--><h2 id="як-відсортувати-елементи-списку-за-допомогою-параметра-key-з-методом-sort">Як відсортувати елементи списку за допомогою параметра key з методом sort()</h2><!--kg-card-end: html--><p>Ви можете використати параметр <code>key</code>, щоб виконати конкретніші операції сортування.</p><p>Значення, призначене параметру <code>key</code>, має щось викликати.</p><p>Наприклад, можна викликати методи та функції.</p><p>Цей метод або функція, призначена до <code>key</code>, буде застосована до всіх елементів у списку перед будь-яким сортуванням і визначатиме логіку для критеріїв сортування.</p><p>Припустимо, ви хочете відсортувати список рядків на основі їхньої довжини.</p><p>Для цього потрібно призначити вбудовану функцію <code>len()</code> до параметру <code>key</code>.</p><p>Функція <code>len()</code> вирахує довжину кожного елемента в списку, підрахувавши символи, які містяться в цьому елементі.</p><pre><code class="language-python">мови_програмування = ["Python", "Swift", "Java", "C++", "Go", "Rust"]

мови_програмування.sort(key=len)

print(мови_програмування)

# вихідні дані

# ['Go', 'C++', 'Java', 'Rust', 'Swift', 'Python']</code></pre><p>У наведеному вище прикладі рядки сортуються у порядку зростання за замовчуванням, але цього разу сортування відбувається на основі їхньої довжини.</p><p>Найкоротший рядок знаходиться зліва, а найдовший — справа.</p><p>Параметри <code>key</code> та <code>reverse</code> також можна комбінувати.</p><p>Наприклад, елементи списку можна відсортувати на основі їхньої довжини, але у порядку спадання.</p><pre><code class="language-python">мови_програмування = ["Python", "Swift", "Java", "C++", "Go", "Rust"]

мови_програмування.sort(key=len, reverse=True)

print(мови_програмування)

# вихідні дані

# ['Python', 'Swift', 'Java', 'Rust', 'C++', 'Go']</code></pre><p>У наведеному вище прикладі рядки відсортовано від найдовшого до найкоротшого.</p><p>Варто зазначити, що ви можете створити власну функцію сортування, щоб надати конкретніші критерії сортування.</p><p>Наприклад, ви можете створити певну функцію, а потім відсортувати список відповідно до значення, яке вона повертає.</p><p>Припустимо, у вас є список словників з мовами програмування та роком створення кожної мови.</p><pre><code class="language-python">мови_програмування = [{'мова':'Python','рік':1991},
{'мова':'Swift','рік':2014},
{'мова':'Java', 'рік':1995},
{'мова':'C++','рік':1985},
{'мова':'Go','рік':2007},
{'мова':'Rust','рік':2010},
]
</code></pre><p>Ви можете визначити власну функцію, яка отримує значення певного ключа зі словника.</p><p>💡 Майте на увазі, що ключ словника і параметр <code>key</code>, який приймає <code>sort()</code>, — це дві різні речі!</p><p>Зокрема, функція отримає і поверне значення ключа <code>рік</code> у списку словників, що вказує рік, коли кожна мова була створена.</p><p>Повернене значення потім буде застосовано як критерій сортування списку.</p><pre><code class="language-python">мови_програмування = [{'мова':'Python','рік':1991},
{'мова':'Swift','рік':2014},
{'мова':'Java', 'рік':1995},
{'мова':'C++','рік':1985},
{'мова':'Go','рік':2007},
{'мова':'Rust','рік':2010},
]

def get_рік(element):
    return element['рік']
</code></pre><p>Потім ви можете виконати сортування відповідно до значення, яке повертає функція, призначивши його до параметру <code>key</code>, і відсортувати список за хронологічним порядком за замовчуванням:</p><pre><code class="language-python">мови_програмування = [{'мова':'Python','рік':1991},
{'мова':'Swift','рік':2014},
{'мова':'Java', 'рік':1995},
{'мова':'C++','рік':1985},
{'мова':'Go','рік':2007},
{'мова':'Rust','рік':2010},
]

def get_рік(element):
    return element['рік']

мови_програмування.sort(key=get_рік)

print(мови_програмування)</code></pre><p>Вихідні дані:</p><pre><code class="language-python">[{'мова': 'C++', 'рік': 1985}, {'мова': 'Python', 'рік': 1991}, {'мова': 'Java', 'рік': 1995}, {'мова': 'Go', 'рік': 2007}, {'мова': 'Rust', 'рік': 2010}, {'мова': 'Swift', 'рік': 2014}]</code></pre><p>Якщо ви хочете відсортувати список від найновішої мови до найстарішої, або інакше кажучи у порядку спадання, тоді використайте параметр <code>reverse=True</code>:</p><pre><code class="language-python">мови_програмування = [{'мова':'Python','рік':1991},
{'мова':'Swift','рік':2014},
{'мова':'Java', 'рік':1995},
{'мова':'C++','рік':1985},
{'мова':'Go','рік':2007},
{'мова':'Rust','рік':2010},
]

def get_рік(element):
    return element['рік']

мови_програмування.sort(key=get_рік, reverse=True)

print(мови_програмування)</code></pre><p>Вихідні дані:</p><pre><code class="language-python">[{'мова': 'Swift', 'рік': 2014}, {'мова': 'Rust', 'рік': 2010}, {'мова': 'Go', 'рік': 2007}, {'мова': 'Java', 'рік': 1995}, {'мова': 'Python', 'рік': 1991}, {'мова': 'C++', 'рік': 1985}]</code></pre><p>Щоб досягти точно такого ж результату, ви можете створити lambda-функцію.</p><p>Замість використання регулярної власної функції, визначеної за допомогою ключового слова <code>def</code>, ви можете:</p><ul><li>створити короткий вираз в одному рядку;</li><li>і не визначати назву функції, як це було зроблено з функцією <code>def</code>. Lambda-функції також називаються <em>анонімними</em> функціями.</li></ul><pre><code class="language-python">мови_програмування = [{'мова':'Python','рік':1991},
{'мова':'Swift','рік':2014},
{'мова':'Java', 'рік':1995},
{'мова':'C++','рік':1985},
{'мова':'Go','рік':2007},
{'мова':'Rust','рік':2010},
]

мови_програмування.sort(key=lambda element: element['рік'])

print(мови_програмування)</code></pre><p>Lambda-функція, яка визначається рядком <code>key=lambda element: element['рік']</code>, відсортує ці мови програмування від найстарішої до найновішої.</p><!--kg-card-begin: html--><h2 id="різниця-між-sort-та-sorted">Різниця між sort() та sorted()</h2><!--kg-card-end: html--><p>Метод <code>sort()</code> працює аналогічно до функції <code>sorted()</code>.</p><p>Загальний синтаксис функції <code>sorted()</code> виглядає так:</p><pre><code class="language-python">sorted(назва_списку,reverse=...,key=...)</code></pre><p>Розберемо детальніше:</p><ul><li><code>sorted()</code> — вбудована функція, яка приймає ітерабельний об’єкт. Потім вона сортує його у порядку зростання або спадання;</li><li><code>sorted()</code> приймає три параметри. Один параметр є обов’язковим, а два інші — необов’язкові;</li><li><code>назва_списку</code> — <strong>обов’язковий</strong> параметр. У цьому випадку параметром є список, але <code>sorted()</code> також приймає будь-який інший ітерабельний об’єкт;</li><li><code>sorted()</code> також приймає необов’язкові параметри <code>reverse</code> та <code>key</code>, які є такими ж необов’язковими параметрами, як і метод <code>sort()</code>.</li></ul><p>Головна різниця між <code>sort()</code> та <code>sorted()</code> полягає в тому, що функція <code>sorted()</code> приймає список і <strong>повертає нову відсортовану копію</strong> цього списку.</p><p>Нова копія містить елементи вихідного списку у відсортованому порядку.</p><p>Елементи у вихідному списку не змінюються і залишаються такими, як є.</p><p>Отже, підсумовуючи:</p><ul><li>метод <code>sort()</code> не має поверненого значення і безпосередньо змінює вихідний список, змінюючи порядок елементів у ньому;</li><li>з іншого боку, функція <code>sorted()</code> має повернене значення, яке є відсортованою копією вихідного списку. Ця копія містить елементи вихідного списку у відсортованому порядку. Крім того, вихідний список залишається незмінним.</li></ul><p>Давайте розглянемо приклад, щоб побачити, як це працює:</p><pre><code class="language-python"># вихідний список чисел
мої_числа = [10, 8, 3, 22, 33, 7, 11, 100, 54]

# відсортуємо вихідний список у стандартному порядку зростання
мої_числа_відсортовано = sorted(мої_числа)

# надрукуємо вихідний список
print(мої_числа)

# надрукуємо копію вихідного списку, яка була створена
print(мої_числа_відсортовано)

# вихідні дані

# [10, 8, 3, 22, 33, 7, 11, 100, 54]
# [3, 7, 8, 10, 11, 22, 33, 54, 100]</code></pre><p>Оскільки до <code>sorted()</code> не було надано додаткових аргументів, вона упорядкувала копію вихідного списку у стандартному порядку зростання — від найменшого значення до найбільшого.</p><p>При друку вихідного списку ви бачите, що він залишився таким самим, а елементи розташовані в початковому порядку.</p><p>Як ви бачили у прикладі вище, копія списку була присвоєна до нової змінної <code>мої_числа_відсортовано</code>.</p><p>Подібне не можна зробити з <code>sort()</code>.</p><p>Розглянемо ще один приклад, щоб побачити, що станеться, якщо спробувати використати метод <code>sort()</code>.</p><pre><code class="language-python">мої_числа = [10, 8, 3, 22, 33, 7, 11, 100, 54]

мої_числа_відсортовано = мої_числа.sort()

print(мої_числа)
print(мої_числа_відсортовано)

# вихідні дані

# [3, 7, 8, 10, 11, 22, 33, 54, 100]
# None</code></pre><p>Як бачите, <code>sort()</code> повертає значення <code>None</code>.</p><p>Ще одна річ, яку варто зазначити: параметри <code>reverse</code> та <code>key</code>, які приймає функція <code>sorted()</code>, працюють точно так само, як і метод <code>sort()</code> з попередніх розділів.</p><!--kg-card-begin: html--><h2 id="коли-використовувати-sort-та-sorted">Коли використовувати sort() та sorted()</h2><!--kg-card-end: html--><p>Нижче перераховано речі, на які потрібно звернути увагу, вирішуючи, що варто використовувати: <code>sort()</code> чи <code>sorted()</code>.</p><p>По-перше, врахуйте тип даних, з якими працюєте:</p><ul><li>якщо ви працюєте виключно зі списком з самого початку, то вам потрібно використовувати метод <code>sort()</code>, оскільки <code>sort()</code> викликається тільки для списків;</li><li>якщо ви хочете більшої гнучкості і поки не працюєте зі списком, то можете використовувати <code>sorted()</code>. Функція <code>sorted()</code> приймає і сортує будь-який ітерабельний об’єкт (словники, кортежі та множини), а не лише списки.</li></ul><p>Потім потрібно врахувати, чи для вас важливо зберегти початковий порядок списку, з яким працюєте:</p><ul><li>при виклику <code>sort()</code> буде змінено вихідний список, а початковий порядок буде втрачено. Ви не зможете відновити початкові позиції елементів списку. Використовуйте <code>sort()</code>, коли ви точно впевнені, що хочете змінити список, з яким працюєте, і впевнені, що не хочете зберігати попередній порядок;</li><li>з іншого боку, функція <code>sorted()</code> корисна, якщо ви хочете створити новий список, але потрібно залишити той список, з яким працюєте. Функція <code>sorted()</code> створить новий відсортований список, елементи якого впорядковані у бажаному порядку.</li></ul><p>Наостанок врахуйте ефективність у часі й пам’яті:</p><ul><li>метод <code>sort()</code> займає й споживає менше пам’яті, оскільки він просто сортує список на місці й не створює зайвий новий список, який вам не потрібний. З цієї ж причини він трохи швидший, оскільки не створює копію. Це може бути корисно, якщо ви працюєте з великими списками, які містять більше елементів.</li></ul><h2 id="-"><strong>Висновок</strong></h2><p>Це все! Тепер ви знаєте, як відсортувати список у Python за допомогою методу <code>sort()</code>.</p><p>Ми також розглянули ключові відмінності між сортуванням списку за допомогою <code>sort()</code> та <code>sorted()</code>.</p><p>Сподіваюсь, ця стаття була корисною.</p><p>Щоб дізнатися більше про мову програмування Python, ознайомтеся з безоплатною сертифікацією freeCodeCamp «<a href="https://www.freecodecamp.org/ukrainian/learn/scientific-computing-with-python/">Наукові обчислення з Python</a>».</p><p>Ви почнете з основ. Навчання побудоване в інтерактивний спосіб, дружній до початківців. У кінці ви створите п’ять проєктів, щоб попрактикуватись і закріпити вивчене.</p><p>Дякую, що прочитали. Щасливого програмування!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Посібник з локалізації: як перекласти вебсайт різними мовами світу ]]>
                </title>
                <description>
                    <![CDATA[ Вітаю! Щоб досягти успіху в глобальному світі, де інформація доступна всього за декілька натискань, важливо адаптувати вебсайт та інші ресурси різними мовами і культурами. Цей посібник навчить основам локалізації та тому, як перекласти вебсайт так, щоб привернути увагу глобальної спільноти користувачів без будь-яких мовних бар’єрів. 🔹 З чого розпочати? Але ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/posibnyk-z-lokalizatsiyi-yak-pereklasty-vebsayt-usima-movamy-svitu/</link>
                <guid isPermaLink="false">65369224aa456103ebe1eed2</guid>
                
                    <category>
                        <![CDATA[ локалізація ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Anastasiia Buievych ]]>
                </dc:creator>
                <pubDate>Wed, 14 Aug 2024 11:25:37 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2023/11/Localization-Course-Handbook-Cover-Version-4.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/localization-book-how-to-translate-your-website/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Localization Guide – How to Translate Your Website Into Different World Languages [Full Book]</a>
      </p><p>Вітаю! Щоб досягти успіху в глобальному світі, де інформація доступна всього за декілька натискань, важливо адаптувати вебсайт та інші ресурси різними мовами і культурами.</p><p>Цей посібник навчить основам локалізації та тому, як перекласти вебсайт так, щоб привернути увагу глобальної спільноти користувачів без будь-яких мовних бар’єрів.</p><h2 id="-"><strong>🔹 З чого розпочати?</strong></h2><p>Але з чого розпочати?</p><p>Це важливе запитання, яке менеджери часто задають собі, коли вирішують адаптувати продукт та зробити його багатомовним.</p><p>У цьому підручнику ви дізнаєтеся всі основи локалізації з концептуальної та практичної точки зору.</p><p>Ви дізнаєтеся, як локалізувати файли, вебсайти, ігри та будь-який інший матеріал на хмарній платформі керування локалізацією <a href="https://crowdin.com">Crowdin</a>, що забезпечує локалізацію freeCodeCamp.</p><p><strong>Ми розглянемо<strong>:</strong></strong></p><ul><li><a href="#freecodecamp-як-реальний-приклад">freeCodeCamp як реальний приклад</a></li><li><a href="#локалізація-від-людей-для-людей">Локалізація від людей для людей</a></li><li><a href="#основи-локалізації">Основи локалізації</a></li><li><a href="#що-таке-локалізація">Що таке локалізація?</a></li><li><a href="#переклад-та-локалізація">Переклад та локалізація</a></li><li><a href="#важливість-локалізації">Важливість локалізації</a></li><li><a href="#термінологія-локалізації">Термінологія локалізації</a></li><li><a href="#переклад-та-редагування">Переклад та редагування</a></li><li><a href="#що-можна-локалізувати">Що можна локалізувати?</a></li><li><a href="#поширені-формати-файлів">Поширені формати файлів</a></li><li><a href="#етапи-та-посади-в-локалізації">Етапи та посади в локалізації</a></li><li><a href="#основи-crowdin-для-локалізаційних-проєктів">Основи Crowdin для локалізаційних проєктів</a></li><li><a href="#важливі-терміни-при-використанні-crowdin">Важливі терміни при використанні Crowdin</a></li><li><a href="#початок-роботи-з-crowdin">Початок роботи з Crowdin</a></li><li><a href="https://www.freecodecamp.org/ukrainian/news/p/2f95d723-16c0-4f5b-a532-fa68c5573ebe/%D1%8F%D0%BA-%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B8%D1%82%D0%B8-%D0%BE%D0%B1%D0%BB%D1%96%D0%BA%D0%BE%D0%B2%D0%B8%D0%B9-%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%20%D0%BD%D0%B0-crowdin">Як створити обліковий запис на Crowdin</a></li><li><a href="#як-налаштувати-профіль-на-crowdin">Як налаштувати профіль на Crowdin</a></li><li><a href="#як-створити-проєкт-на-crowdin">Як створити проєкт на Crowdin</a></li><li><a href="#огляд-проєкту">Огляд проєкту</a></li><li><a href="#як-змінити-налаштування-проєкту-на-crowdin">Як змінити налаштування проєкту на Crowdin</a></li><li><a href="#як-видалити-проєкт-на-crowdin">Як видалити проєкт на Crowdin</a></li><li><a href="#як-завантажити-файли-до-проєкту-на-crowdin">Як завантажити файли до проєкту на Crowdin</a></li><li><a href="#як-розпочати-перекладати">Як розпочати перекладати</a></li><li><a href="https://www.freecodecamp.org/ukrainian/news/p/2f95d723-16c0-4f5b-a532-fa68c5573ebe/%D1%8F%D0%BA-%D0%BA%D0%BE%D1%80%D0%B8%D1%81%D1%82%D1%83%D0%B2%D0%B0%D1%82%D0%B8%D1%81%D1%8F-%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%BC-%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D0%BB%D0%B0%D0%B4%D1%83">Як користуватися редактором перекладу</a></li><li><a href="#режими-редактора-перекладу">Режими редактора перекладу</a></li><li><a href="#як-перейти-до-іншого-файлу">Як перейти до іншого файлу</a></li><li><a href="#як-переглянути-всі-рядки">Як переглянути всі рядки</a></li><li><a href="#як-перекладати-мови-із-письмом-справа-наліво">Як перекладати мови із письмом справа наліво</a></li><li><a href="#як-скачати-перекладені-файли">Як скачати перекладені файли</a></li><li><a href="#як-використовувати-память-перекладів">Як використовувати пам’ять перекладів (TM)</a></li><li><a href="#глосарій">Глосарій</a></li><li><a href="#забезпечення-якості-на-crowdin">Забезпечення якості (QA) на Crowdin</a></li><li><a href="#як-завантажити-наявні-переклади">Як завантажити наявні переклади</a></li><li><a href="#як-попередньо-перекласти-проєкт">Як попередньо перекласти проєкт</a></li><li><a href="#переклад-офлайн">Переклад офлайн</a></li><li><a href="#громадські-проєкти">Громадські проєкти</a></li><li><a href="#crowdin-для-команд-та-організацій">Crowdin для команд та організацій</a></li><li><a href="#як-запросити-членів-команди">Як запросити членів команди</a></li><li><a href="#посади">Посади</a></li><li><a href="#як-призначити-або-змінити-посаду">Як призначити або змінити посаду</a></li><li><a href="#менеджери-проєкту">Менеджери проєкту</a></li><li><a href="#завдання">Завдання</a></li><li><a href="#звіти">Звіти</a></li><li><a href="#бесіди-на-crowdin">Бесіди на Crowdin</a></li><li><a href="#інтеграції-та-інструменти-для-підвищення-продуктивності-на-crowdin">Інтеграції та інструменти для підвищення продуктивності на Crowdin</a></li><li><a href="#як-перекласти-вебсайт-на-crowdin">Як перекласти вебсайт на Crowdin</a></li><li><a href="#переклад-freecodecamp">Переклад freeCodeCamp</a></li></ul><p>Готові? Тоді розпочнемо!</p><!--kg-card-begin: html--><h2 id="freecodecamp-як-реальний-приклад">🔹 freeCodeCamp як реальний приклад</h2><!--kg-card-end: html--><p>freeCodeCamp.org — це реальний приклад організації та проєкту з відкритим кодом, який скористався поняттям локалізації, щоб привернути увагу глобальної спільноти. </p><p>Наша навчальна програма з програмування доступна багатьма мовами, зокрема:</p><ul><li>англійською;</li><li>іспанською;</li><li>китайською;</li><li>італійською;</li><li>португальською;</li><li>українською;</li><li>японською.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/freecodecamp-language-dropdown-1.png" class="kg-image" alt="freecodecamp-language-dropdown-1" width="600" height="400" loading="lazy"><figcaption>Як змінити мову на freeCodeCamp.</figcaption></figure><p>Наша спільнота активно працює над перекладом freeCodeCamp іншими мовами, зокрема:</p><ul><li>арабською;</li><li>азербайджанською;</li><li>бенгальською;</li><li>китайською (спрощеною);</li><li>нідерландською;</li><li>французькою;</li><li>німецькою;</li><li>івритом;</li><li>гінді;</li><li>індонезійською;</li><li>італійською;</li><li>японською;</li><li>корейською;</li><li>непальською;</li><li>перською;</li><li>португальською;</li><li>румунською;</li><li>іспанською;</li><li>суахілі;</li><li>турецькою;</li><li>українською;</li><li>урду;</li><li>та багатьма іншими.</li></ul><p>Для локалізації доступно багато світових мов, а також ми публікуємо локалізовані публікації, канали на YouTube, форуми та інше.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/freecodecamp-crowdin-project.png" class="kg-image" alt="freecodecamp-crowdin-project" width="600" height="400" loading="lazy"><figcaption>Локалізаційний проєкт навчальної програми та доступні мови.</figcaption></figure><!--kg-card-begin: html--><h2 id="локалізація-від-людей-для-людей">🔹 Локалізація від людей для людей</h2><!--kg-card-end: html--><p>Наш процес локалізації спрямований на те, що має найбільше значення: на чудову спільноту учнів, які прокидаються кожен день з ентузіазмом, щоб здобути нові навички.</p><p>Ми вважаємо, що мова та культура не повинні бути бар’єрами для навчання. Знання мають бути доступними по всьому світу.</p><p>Тому ми розпочали цей процес і будемо продовжувати наші зусилля, доки не забезпечимо доступ до знань у кожному куточку світу. </p><p>Одним з ключових аспектів нашого процесу локалізації є те, що він керується і виконується людьми для людей. Переклади написані й затверджені волонтерами та працівниками нашої неймовірної спільноти. </p><p>Будьмо чесними: кожен може відрізнити автоматично згенерований переклад. Він буквальний, в ньому не вистачає чіткості і він відчувається відокремленим від контексту та тону вихідного тексту. </p><p>Люди набагато краще адаптовують мову, а також перекладають речення таким чином, щоб вони звучали більш природно різними мовами та у контексті різних культур. </p><p>freeCodeCamp має чудову спільноту волонтерів, які присвячують свій час на переклад наших матеріалів, а також чудову команду працівників, які контролюють процес з остаточною метою публікації перекладів високої якості. </p><p>З моменту запуску наших зусиль з локалізації понад 2 000 перекладачів та понад 60 редакторів допомогли виконати нашу місію. </p><p>💡 <strong>Важливо<strong>:</strong></strong> якщо ви зацікавлені і хочете долучитися до перекладу freeCodeCamp, будь ласка, прочитайте <a href="https://contribute.freecodecamp.org/intro/">наші правила</a>. У кінці цієї статті ви знайдете більше інформації про наші зусилля з локалізації.</p><p>Керування таким великим проєктом зі світовою спільнотою може здатися складним, правда ж? Як ми можемо досягнути цього як неприбуткова організація? </p><p>Ви отримаєте відповіді на всі запитання у цьому посібнику. </p><p>Ми розглянемо всі основи локалізації, а також основні та розширені можливості <a href="https://crowdin.com">Crowdin</a>. </p><p>Готові? Розпочнемо.</p><!--kg-card-begin: html--><h2 id="основи-локалізації">🔹 Основи локалізації</h2><!--kg-card-end: html--><p>Ми розпочнемо з огляду основ локалізаційного процесу та кроків, які потрібно зробити, щоб продукт можна було використовувати без будь-яких мовних або культурних бар’єрів. </p><!--kg-card-begin: html--><h3 id="що-таке-локалізація">🔶 Що таке локалізація?</h3><!--kg-card-end: html--><p>Перш за все, визначимо <strong>локалізацію</strong>.</p><p>Згідно з <a href="https://dictionary.cambridge.org/dictionary/english/localization">Cambridge Dictionary</a>, локалізація — це: </p><blockquote>Процес організації бізнесу або промисловості так, щоб головна діяльність відбувалась в локальних місцях, а не на національному або міжнародному рівні. </blockquote><p>У контексті продуктів та послуг, локалізація, в основному, означає адаптацію до мови та культури конкретного населення. Це також стосується застосунків, оскільки їх також потрібно адаптувати до різних культур.</p><!--kg-card-begin: html--><h3 id="переклад-та-локалізація">🔶 Переклад та локалізація</h3><!--kg-card-end: html--><p>Ви можете бути здивовані, дізнавшись, що локалізація відрізняється від перекладу. Насправді, вона ширша. </p><p><a href="https://dictionary.cambridge.org/dictionary/english/translation">Cambridge Dictionary</a> дає таке визначення перекладу:</p><blockquote>Дія або процес заміни слів однієї мови на слова іншої мови, які мають той самий зміст. </blockquote><p>Зверніть увагу на ключову частину цього визначення: «заміна слів, які мають той самий зміст». </p><p>Переклад передбачає заміну слів однієї мови на слова іншої мови з метою збереження початкового значення. Це дуже корисно, але трохи обмежено, оскільки мета полягає в тому, щоб сказати те саме, але іншою мовою. </p><p>Однак локалізація може вийти за межі цього, щоб краще пристосувати продукт до іншої культури чи країни. </p><p>Наприклад, локалізація особливо корисна для маркетингових кампаній та рекламних оголошень, які намагаються досягти аудиторії і переконати придбати продукт. Деякі культури можуть краще сприймати певні кольори, або в них можуть бути місцеві фрази чи жаргон, з якими місцеве населення більше знайоме. </p><p>У такому випадку локалізація кампанії краща, ніж буквальний переклад. </p><p><strong>Постійна локалізація</strong> йде ще далі. Вона передбачає постійну локалізацію продукту під час оновлення або розширення в гнучкому циклі розробки продукту. Вона часто використовується для локалізації застосунків.</p><!--kg-card-begin: html--><h3 id="важливість-локалізації">🔶 Важливість локалізації</h3><!--kg-card-end: html--><p>Навіщо локалізувати продукт або платформу? Світ дуже різноманітний, і різні культури мають свої відмінні звичаї та говорять різними мовами. </p><p>Ви знали, що, за даними <a href="https://www.linguisticsociety.org/content/how-many-languages-are-there-world">Лінгвістичного товариства Америки</a>, у світі існує понад 6 000 мов? </p><p>Серед 20 найбільш поширених мов у світі ми можемо знайти такі:</p><ul><li>англійська;</li><li>мандаринська;</li><li>гінді;</li><li>іспанська;</li><li>французька;</li><li>арабська;</li><li>бенгальська;</li><li>португальська;</li><li>урду;</li><li>німецька;</li><li>японська.</li></ul><p>💡 <strong>Важливо<strong>: </strong></strong>більше інформації про мови за загальною кількістю мовців можна знайти у <a href="https://en.wikipedia.org/wiki/List_of_languages_by_total_number_of_speakers">цій статті</a>.</p><p>Велика частина людей не знає більше однієї мови. Не кожен має можливість вивчити та володіти англійською як другою мовою, але кожна людина є потенційним користувачем вашого продукту чи платформи. </p><p>Саме тому локалізація може бути настільки важливою для вас. </p><p>Наприклад, якщо ви створюєте освітню платформу, ви зможете привернути увагу людей і здійснити місію на світовому рівні, локалізуючи свій вебсайт. </p><p>Якщо ви створюєте комерційний продукт або платформу, будь-хто може стати вашим потенційним користувачем. </p><p>Не дозволяйте мові стати бар’єром. Локалізація може стати вашим найкращим другом.</p><!--kg-card-begin: html--><h3 id="термінологія-локалізації">🔶 Термінологія локалізації</h3><!--kg-card-end: html--><p>Тепер ви знаєте чому локалізація настільки важлива, тому заглибимося в деякі важливі терміни, з якими ви часто зустрічатиметесь у контексті перекладу та локалізації.</p><h3 id="--1"><strong>Інтернаціоналізація</strong></h3><blockquote>Дія становлення або перетворення чогось у міжнародний рівень.<br> — <a href="https://dictionary.cambridge.org/dictionary/english/internationalization">Cambridge Dictionary</a></blockquote><p>У контексті локалізації застосунку це також передбачає адаптацію інтерфейсу користувача для роботи з іншими мовами та його готовність до перекладу.</p><h3 id="--2"><strong>Культуризований</strong></h3><blockquote>Походить від культури або зумовлений нею.<br> — <a href="https://www.merriam-webster.com/dictionary/culturalized">Merriam-Webster Dictionary</a></blockquote><p>У кожної культури різні традиції та словниковий запас. Культура може відігравати ключову роль у тому, як спільнота сприймає продукт, кампанію та платформу. Для успіху дуже важливо розуміти, як їх адаптувати.</p><h3 id="--3"><strong>Псевдолокалізація</strong></h3><p>Префікс <em>псевдо</em> визначений як:</p><blockquote>Несправжній, неправильний, фальшивий.<br> — <a href="https://goroh.pp.ua/Етимологія/псевдо-">Горох</a></blockquote><p>Саме про це йдеться в псевдолокалізації. Це процес створення фальшивих перекладів, які виступають як заповнювачі для реальних перекладів на платформі чи в продукті.</p><p>Ви можете запитати: «Для чого нам фальшиві переклади?»</p><p>Відповідь полягає в тому, що ми використовуємо їх перед початком перекладу, щоб перевірити, чи програмне забезпечення готове працювати з декількома мовами.</p><p>Найчастіше це стосується перевірки того, чи мова з довшими або коротшими словами працює з інтерфейсом користувача, і чи правильно відтворюються мови із письмом справа наліво.</p><p>Цей процес також допомагає знайти будь-які рядки, які можуть бути закодованими у вихідних файлах проєкту. Можливо, вам знадобиться перемістити їх до файлу, де зберігаються всі рядки проєкту.</p><p>Основною метою псевдолокалізації є перевірка готовності до перекладу.</p><h3 id="-mt-"><strong>Машинний переклад (MT)</strong></h3><blockquote>Процес використання штучного інтелекту для автоматичного перекладу тексту з однієї мови на іншу без участі людини.<br> — <a href="https://aws.amazon.com/what-is/machine-translation/">Amazon Web Services</a></blockquote><p>Ми поговоримо про цей термін детальніше, оскільки платформа, яку ми використовуватимемо для перекладу нашого матеріалу, має цю функцію, і може зберегти багато часу.</p><h3 id="-tm-"><strong>Пам’ять перекладів (TM)</strong></h3><blockquote>База даних, що містить набір раніше перекладених текстів.<br> — <a href="https://uk.wikipedia.org/wiki/Пам%27ять_перекладів">Вікіпедія</a></blockquote><p>Завдяки цій функції можна зберігати попередні переклади і повторно використовувати їх, щоб зберегти час.</p><p>💡 <strong>Важливо<strong>: </strong></strong>зверніть увагу, що абревіатури (MT та TM) дуже схожі, але вони відрізняються. Будь ласка, приділіть деякий час, щоб зрозуміти різницю між цими двома поняттями, оскільки ви будете часто зустрічати їх у цьому посібнику.</p><h3 id="-llm-"><strong>Великі мовні моделі (LLM)</strong></h3><blockquote>Алгоритми глибокого навчання, які можуть розпізнавати, узагальнювати, перекладати, передбачати та генерувати вміст, використовуючи дуже великі набори даних.<br> — <a href="https://www.nvidia.com/en-us/glossary/data-science/large-language-models/">Nvidia</a></blockquote><p>Ці терміни є фундаментальними, якщо ви плануєте зануритися у переклад та локалізацію.</p><p>Ви також можете зустріти слова, які використовують числа для позначення скорочень. Їх називають нумеронімами.</p><ul><li><strong>l<strong>10n</strong></strong>: цей нумеронім означає локалізацію. Число 10 позначає 10 літер між <strong>l</strong> напочатку та <strong>n</strong> вкінці;</li><li><strong><strong>i18n</strong></strong>: цей нумеронім означає інтернаціоналізацію (так, це дуже довге слово!). Число 18 позначає 18 літер між <strong>і</strong> напочатку та <strong>n</strong> вкінці.</li></ul><p>💡 <strong>Важливо<strong>: </strong></strong>літеру L в l10n можуть писати як великою, так і малою. Велика літера L допомагає відрізнити його від нумероніма i18n (вони можуть виглядати схожими в деяких шрифтах).</p><!--kg-card-begin: html--><h3 id="переклад-та-редагування">🔶 Переклад та редагування</h3><!--kg-card-end: html--><p>Ще одний важливий аспект, який ви повинні знати, — це різниця між перекладом та редагуванням.</p><p><strong>Переклад</strong> передбачає заміну слів з однієї мови на іншу з метою збереження того самого значення.</p><p>Але після того, як перекладачі завершили свою роботу, команда локалізації також повинна переглянути, відредагувати та затвердити переклади, щоб переконатися, що все точно і правильно. Цей процес перевірки перекладів називається <strong>редагуванням</strong>.</p><p>Переклад та редагування — це різні етапи процесу локалізації. Ми докладніше розглянемо ці процеси, і ви дізнаєтеся про кроки, з яких вони складаються, та роль команди у забезпеченні правильної локалізації.</p><!--kg-card-begin: html--><h3 id="що-можна-локалізувати">🔶 Що можна локалізувати?</h3><!--kg-card-end: html--><p>Коли ми говоримо про переклад та локалізацію, першим на думку спадає переклад файлів з текстом, правда ж?</p><p>Проте це не єдиний матеріал, який можна локалізувати. Ми можемо локалізувати документи, електронні таблиці, вебсайти, ігри, діалоги, сценарії, аудіо, відео, графіку і так далі.</p><p>Подумайте про подкасти та відео. Їх можна локалізувати за допомогою дубляжу. Нам просто потрібно перекласти транскрипт, замінити оригінальне аудіо та синхронізувати перекладений звук.</p><p>Титри та субтитри також можна локалізувати. Це форма тексту, але вона походить з відеоджерела. Ви можете помітити, як різні типи файлів можуть бути тісно пов’язані у процесі локалізації.</p><p>Зрештою, ми можемо локалізувати графіку, як-от зображення, візуальні маркетингові кампанії, рекламу та багато іншого.</p><p>Основний момент, який варто підкреслити, полягає в тому, що локалізація та переклад не обмежуються лише письмовим матеріалом. Є широкий спектр матеріалу, який можна локалізувати, щоб отримати увагу більшої аудиторії.</p><!--kg-card-begin: html--><h3 id="поширені-формати-файлів">🔶 Поширені формати файлів</h3><!--kg-card-end: html--><p>У попередньому розділі ми говорили про різні типи матеріалу, який можна перекласти. Тепер поговоримо про формати файлів, які зазвичай зустрічаються в перекладі. Ви також можете знайти їх на платформі, на якій ми будемо працювати.</p><p>💡 <strong>Важливо<strong>: </strong></strong>навіть якщо ви зараз не використовуєте ці формати, завжди корисно розуміти, що вони роблять і що вони представляють. Вони можуть стати в нагоді у майбутньому або у випадках, коли ви зустрінете їх у документації платформи, якою користуєтеся.</p><h3 id="-csv"><strong>Файли CSV</strong></h3><ul><li>розширення файлу: <code><strong><strong>.csv</strong></strong></code>;</li><li>текстовий формат файлу, де значення розділені комами;</li><li>зберігає табличні дані, серед яких числа і текст;</li><li>кожен рядок зазвичай представляє один запис;</li><li>зазвичай використовується для обміну даними і може бути оброблений за допомогою мов програмування.</li></ul><h3 id="-html"><strong>Файли HTML</strong></h3><ul><li>розширення файлу: <code><strong><strong>.html</strong></strong></code>;</li><li>HTML означає «мова розмітки гіпертексту»;</li><li>використовується для представлення структури та вмісту вебсайту;</li><li>якщо ви відкриєте цей файл у браузері, ви побачите вміст вебсайту.</li></ul><h3 id="-json"><strong>Файли JSON</strong></h3><ul><li>розширення файлу: <code><strong><strong>.json</strong></strong></code>;</li><li>JSON означає «запис об’єктів JavaScript»;</li><li>зберігає дані у простому текстовому форматі на основі пар ключ-значення;</li><li>використовується для обміну даними, особливо в інтернеті, оскільки є легким.</li></ul><h3 id="-markdown"><strong>Файли markdown</strong></h3><ul><li>розширення файлу: <code><strong><strong>.md</strong></strong></code>;</li><li>використовується для створення форматованого тексту;</li><li>легка мова розмітки зі специфічним синтаксисом;</li><li>часто використовується для написання документації програмного забезпечення, блогів та статей.</li></ul><h3 id="-po"><strong>Файли PO</strong></h3><ul><li>розширення файлу: <code><strong><strong>.po</strong></strong></code>;</li><li>використовується системою <code><strong>gettext</strong></code>, яку часто використовують для написання багатомовних програм. Також широко використовується при реалізації <code><strong>GNU gettext</strong></code>;</li><li><code><strong>gettext</strong></code> є стандартом в багатьох рушіях розробки ігор, таких як Unreal Engine. Використовується в багатьох мовах програмування, включно з C, C++, PHP та Python.</li></ul><h3 id="--4"><strong>Текстовий файл</strong></h3><ul><li>розширення файлу: <code><strong><strong>.txt</strong></strong></code>;</li><li>використовується для зберігання звичайного тексту;</li><li>не містить зображень або нетекстових символів.</li></ul><h3 id="-xml-"><strong>Розширювана мова розмітки (XML)</strong></h3><ul><li>розширення файлу: <code><strong><strong>.xml</strong></strong></code>;</li><li>використовується для зберігання, обміну та відновлення довільних даних;</li><li>зазвичай використовується для обміну даними в інтернеті;</li><li>багато локалізаційних фреймворків використовують XML. Наприклад, Android використовує формат файлів на основі XML для зберігання текстів, які можна перекласти.</li></ul><h3 id="-xliff"><strong>Файли XLIFF</strong></h3><ul><li>розширення файлу: <code><strong><strong>.xliff</strong></strong></code>;</li><li>XLIFF означає «формат файлу обміну локалізацією на основі XML»;</li><li>використовує формат на основі XML;</li><li>використовується для стандартизації способу передачі локалізованих даних між інструментами локалізації.</li></ul><h3 id="-xlsx"><strong>Файли XLSX</strong></h3><ul><li>розширення файлу: <code><strong><strong>.xlsx</strong></strong></code>;</li><li>використовується для зберігання даних в електронних таблицях;</li><li>скорочення до «Microsoft Excel Spreadsheet».</li></ul><h3 id="-resx"><strong>Файли RESX</strong></h3><ul><li>розширення файлу: <code><strong><strong>.resx</strong></strong></code>;</li><li>використовується .NET-застосунками для зберігання ресурсів, які можна локалізувати;</li><li>використовує формат файлу на основі XML.</li></ul><p>Це найпоширеніші формати файлів, які можна знайти у локалізаційних проєктах, але існує більше сотні форматів файлів, якими можна користуватися.</p><p>Crowdin — платформа керування локалізацією, яку ми використовуватимемо у цьому посібнику — підтримує більше 100 форматів файлів.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/supported-formats.png" class="kg-image" alt="supported-formats" width="600" height="400" loading="lazy"><figcaption>Перегляд <a href="https://store.crowdin.com/categories/file-formats">підтримуваних форматів</a> на Crowdin.</figcaption></figure><!--kg-card-begin: html--><h3 id="етапи-та-посади-в-локалізації">🔶 Етапи та посади в локалізації</h3><!--kg-card-end: html--><p>Чудово! Тепер ви знаєте більше про типи файлів, які можуть зустрітися у локалізаційному проєкті, тому давайте розглянемо цей процес з точки зору керування проєктами.</p><p>Які кроки потрібно виконати для локалізації проєкту? З чого почати? Ось кроки, які допоможуть відповісти на ці запитання:</p><h3 id="-1-"><strong>Крок №1. Визначте область та мету проєкту</strong></h3><p>Перш ніж локалізувати будь-який файл, важливо проаналізувати область та мету проєкту.</p><p>Дайте відповідь на такі запитання:</p><ul><li>Хто виступає цільовою аудиторією?</li><li>Чого я намагаюсь досягти, локалізуючи матеріал?</li><li>Як досягти цих цілей?</li><li>Які частини вебсайту, гри, відео або матеріалу потрібно локалізувати? </li><li>Матеріал потрібно перекласти чи локалізувати (адаптувати)? Іноді достатньо перекладу.</li><li>Якщо його потрібно адаптувати, як це зробити?</li><li>Варто просити порад від людей, які знайомі з цією культурою? Якщо так, як зв’язатись з ними?</li><li>Я розмовляю іншими мовами. Чи можу я самостійно перекласти матеріал, чи варто залучити допомогу?</li><li>Який бюджет?</li><li>Чи реалістичні мої цілі відносно бюджету?</li></ul><p>Також потрібно визначити, хто перекладатиме матеріал:</p><ul><li>Я перекладатиму самостійно?</li><li>Я залучу команду волонтерів?</li><li>Я найму команду перекладачів?</li><li>Я використовуватиму автоматизовані процеси, такі як машинний переклад або попередній переклад за допомогою штучного інтелекту?</li></ul><p>💡 <strong>Важливо<strong>: </strong></strong>Crowdin дозволяє найняти їхні послуги локалізації та послуги від партнерів на Crowdin Marketplace.</p><p>Важливо визначити чіткі та реалістичні цілі, щоб уникнути непередбачуваних ситуацій.</p><p>Запишіть свої цілі і переконайтеся, що у вас розписані кроки, які потрібно зробити, щоб розпочати, виконати та завершити процес локалізації.</p><h3 id="-2-"><strong>Крок №2. Створіть файли, які потрібно локалізувати</strong></h3><p>Коли у вас є чіткі цілі та обсяг проєкту, наявність вихідних файлів проєкту є обов’язковою. Це файли, які ваша команда буде локалізувати.</p><p>Переконайтеся, що у вас є всі необхідні вихідні файли та ресурси, перш ніж розпочати процес локалізації.</p><p>Звичайно, ви завжди можете додати новий матеріал в процесі, але наявність чіткої початкової ідеї про складнощі проєкту буде корисною з точки зору керування часом та бюджетом.</p><h3 id="-3-"><strong>Крок №3. Підготуйте продукт до інтернаціоналізації</strong></h3><p>Перш ніж розпочати процес локалізації, потрібно підготувати свій продукт до інтернаціоналізації, що дуже специфічно стосовно технологій.</p><p>Це особливо стосується програмного забезпечення. Інструменти, які ви використовуватимете для інтернаціоналізації застосунку React.js, можуть відрізнятися від інструментів, які ви використовуватимете для Android, iOS або гри.</p><p>Однак підходи та поняття, які ви будете використовувати, в основному однакові.</p><p>Вам потрібно подумати про те, як ви адаптуєте інтерфейс користувача та сервіси до інших мов. Наприклад, деякі мови можуть мати слова, які довші або коротші за вихідну мову, і це може змінити відтворення елементів.</p><p>Важливо переконатися, що все виглядає так, як ви цього бажаєте, ще до того, як у процес будуть залучені перекладачі та редактори.</p><p>Ще один ключовий крок — переконатися, що весь текст для перекладу відокремлений від коду. Під час перекладу програмного забезпечення весь текст для перекладу витягнутий у файл матеріалів, який можна передати перекладачам або завантажити на платформу керування локалізацією.</p><p>Команда Crowdin рекомендує зберігати великі файли, наприклад, HTML-сторінки та шаблони листів, в окремій директорії та мати по одній директорії на кожну мовну локаль. Вони пропонують, що «якщо ви перекладаєте свій матеріал на 5 цільових мов, у вас буде 5 копій матеріалу з позначками інтерфейсу та 5 директорій з усіма іншими активами, як-от HTML-файли».</p><p>Якщо ви розробляєте вебзастосунок, потрібно реалізувати багатомовний маршрутизатор. Застосунок повинен дозволяти користувачам вибрати бажану мову.</p><p>Для цього у вас є два варіанти. Ви можете:</p><ul><li>додати код мови як частину назви домена. Наприклад, <code><strong><strong>fr.example.com</strong></strong></code>;</li><li>додати код мови до посилання. Наприклад, <strong><strong><code>example.com/fr</code></strong></strong>.</li></ul><p>Це рекомендується з метою оптимізації пошукової системи (SEO).</p><p>Програмне забезпечення має обробляти та відтворювати адаптовані числа, дати та валюти, оскільки локалізація може передбачати їх адаптацію до різних форматів для різних культур.</p><p>Контекст дуже важливий. Багато інструментів інтернаціоналізації створюють файли з однією парою ключ-значення для кожної частини тексту. Вони пов’язують частину тексту вихідною мовою з відповідним перекладом.</p><p>Але важливо впевнитися, що файли містять деяку контекстуальну інформацію про вміст або елементи навколо них. Це може бути дуже корисно для перекладачів, оскільки вони можуть вибирати найкращий переклад, виходячи з контексту навколо рядка.</p><p>Зрештою, застосунок повинен вміти правильно обробляти множину, оскільки різні мови можуть мати різні форми множини.</p><p>💡 <strong>Важливо<strong>:</strong></strong> деякі з цих функцій можуть бути доступними в комплекті розробки програмного забезпечення (SDK), який ви використовуєте, але, можливо, вам знадобиться додати деякі з них за допомогою сторонніх бібліотек. Варто завжди це враховувати та перевіряти.</p><h3 id="-4-"><strong>Крок №4. Зберіть команду</strong></h3><p>Якщо ви проаналізували обсяг проєкту і вирішили, що не можете впоратися з ним самостійно, настав час зібрати команду.</p><p>Ви можете найняти команду або, якщо ви неприбуткова організація, як і freeCodeCamp, використовувати краудсорсинг, щоб попросити спільноту про допомогу з перекладом. Ви можете бути здивовані кількістю щирих і добрих людей, які готові допомогти.</p><p>Як тільки у вас є команда, ви можете призначити їм посади:</p><ul><li><strong>перекладачі</strong> використовують обрану вами платформу керування локалізацією для перекладу матеріалу;</li><li><strong>редактори</strong> переглядають, редагують та затверджують переклади. Переклади завжди корисно переглядати, щоб виправити будь-які помилки або невідповідності;</li><li><strong>розробники</strong> працюють над інтеграцією інструментів, які ви вибрали, для автоматизації процесу локалізації;</li><li><strong>менеджери проєкту</strong> координують завдання. Вони призначають перекладачам та редакторам конкретні завдання, щоб забезпечити якомога швидше просування проєкту.</li></ul><h3 id="-5-"><strong>Крок №5. Виберіть інструменти для локалізації</strong></h3><p>Вибір правильного інструменту локалізації може бути вирішальним для досягнення цілей. У світі локалізації існує інструмент, який називається системою керування перекладами (TMS).</p><p>Цей тип системи призначений для того, щоб допомогти автоматизувати повторювані завдання з метою оптимізації робочого процесу команди. Люди все одно матимуть свою посаду в процесі локалізації, але за допомогою системи керування перекладами вони можуть досягати своїх цілей набагато швидше.</p><p>Зазвичай ці системи можуть бути інтегровані з системами керування вмістом (CMS), щоб автоматично імпортувати матеріал з інших платформ, таких як платформи для блогів. Після імпорту ви можете локалізувати його і експортувати для публікації перекладених версій.</p><p>З відповідними інтеграціями системи керування перекладами також можуть перевіряти, чи були зміни у вихідних файлах, і автоматично імпортувати новий матеріал для початку локалізації.</p><p>Реальний приклад цього процесу: freeCodeCamp перекладає вихідні файли на Crowdin. Коли файл з навчальної програми freeCodeCamp змінюється, новий матеріал автоматично оновлюється в системі, щоб волонтери могли швидко його перекласти та опублікувати.</p><p>Автоматизація цього процесу може бути дуже корисною, особливо для великих організацій з різними проєктами та файлами, щоб вам не доводилося вручну відстежувати ці зміни.</p><h3 id="-6-"><strong>Крок №6. Перекладіть матеріал</strong></h3><p>Якщо ви вже обрали систему керування перекладами або інший корисний інструмент, то настав час почати перекладати матеріал.</p><p>Зазвичай ці платформи розбивають вихідний матеріал на так звані «рядки», які є частинами тексту, що можна перекласти. Перекладачі перекладатимуть рядки та зберігатимуть переклади.</p><p>Програмне забезпечення буде відповідальне за зберігання та об’єднання рядків для їх заміни у правильному місці файлу.</p><h3 id="-7-"><strong>Крок №7. Відредагуйте переклади</strong></h3><p>Редагування є одним з найважливіших етапів процесу, оскільки це останній крок контролю якості, зроблений людьми.</p><p>Редактори мають перевірити, чи переклади точні, і чи можна їх адаптувати до культури чи мови ще краще. Вони також перевіряють, чи є друкарські помилки або помилково введені слова, і чи використовується правильний формат. Вони можуть редагувати та затверджувати перекладені рядки.</p><p>Іноді вони можуть виявити додаткову кому, відсутній емоджі, зайвий пробіл або відсутню літеру, а ці маленькі деталі дійсно важливі для користувачів, тому цей етап варто сприймати дуже серйозно.</p><h3 id="-8-"><strong>Крок №8. Експортуйте локалізований матеріал</strong></h3><p>Після перевірки та затвердження всіх перекладів наступним кроком є експорт остаточного локалізованого матеріалу.</p><p>Якщо проєкт невеликий, ви можете зробити це вручну. Але якщо проєкт складніший, можна вибрати автоматизацію цього процесу з різними інтеграціями у системі керування локалізацією.</p><p>Наприклад, Crowdin дозволяє інтеграцію з різними платформами, включно з GitHub, Google Drive, Google Sheets, Dropbox, MailChimp та іншими.</p><p>Якщо переклад готовий та затверджений, і ви налаштували інтеграцію з GitHub, перекладені файли будуть автоматично оновлюватися у сховищі проєкту. Ви навіть можете налаштувати, де будуть зберігатися перекладені файли.</p><h3 id="-9-"><strong>Крок №9. Слідкуйте за змінами</strong></h3><p>Проєкти та платформи можуть змінюватися з часом. Файли можуть змінюватися, оскільки ви додаєте нові функції та матеріал. Це актуально для freeCodeCamp, оскільки ми регулярно додаємо новий матеріал і оновлюємо старий.</p><p>Як ми можемо керувати цими змінами і зберігати платформу локалізованою?</p><p>Завдяки Crowdin ми можемо використовувати інтеграції, щоб бути повідомленими про зміни, внесеними до файлів, і ми можемо знати, якщо у нас є нові рядки для перекладу.</p><p>Коли це стається, наша дивовижна команда волонтерів і працівників починає перекладати та перевіряти нові рядки, повторюючи цей цикл кожного разу, коли нам потрібно повернути відсоток перекладу до 100%.</p><!--kg-card-begin: html--><h2 id="основи-crowdin-для-локалізаційних-проєктів">🔹 Основи Crowdin для локалізаційних проєктів</h2><!--kg-card-end: html--><p>Ми ознайомилися з основними поняттями локалізації, тому можемо використати їх на платформі керування локалізацією, яка забезпечує локалізацію freeCodeCamp.</p><h3 id="--5"><strong>Що таке платформа керування локалізацією?</strong></h3><p>Це платформа, яка допомагає вам та вашій команді ефективно локалізувати матеріал, продукт та платформу за допомогою автоматизації, хмарних послуг та інтеграцій з іншими платформами.</p><p>Ми вже говорили про платформи керування перекладами, правда ж?</p><p>Платформи керування локалізацією дуже схожі, але вони допомагають локалізувати продукт, що є ширшим, ніж дослівний переклад тексту.</p><h3 id="-crowdin"><strong>Що таке Crowdin?</strong></h3><p>Crowdin — це платформа керування локалізацією, яку можна описати як:</p><blockquote>рішення на основі хмарних технологій, яке спрощує управління локалізацією для вашої команди (<a href="https://crowdin.com/">джерело: Crowdin</a>)</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/crowdin-landing-page.png" class="kg-image" alt="crowdin-landing-page" width="600" height="400" loading="lazy"><figcaption>Цільова сторінка Crowdin.</figcaption></figure><p>Команда зазначає, що «це ідеальне місце для ефективного управління всім багатомовним матеріалом. Воно дозволяє оптимізувати процес локалізації та зберігати робочий потік гнучким».</p><p>Ця платформа також чудово підходить для команд та організацій, які планують локалізувати матеріал декількома мовами.</p><p>Ось <a href="https://crowdin.com">офіційний вебсайт Crowdin</a>, якщо ви хочете його переглянути.</p><p>На цій платформі ви будете застосовувати свої знання з локалізації, і навіть дізнаєтеся, як локалізувати вебсайт всього за декілька хвилин завдяки сервісам та інтеграціям Crowdin.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/crowdin-workflow.png" class="kg-image" alt="crowdin-workflow" width="600" height="400" loading="lazy"><figcaption>Робочий потік Crowdin. Зображення з <a href="https://crowdin.com">офіційного вебсайту</a>.</figcaption></figure><h3 id="-crowdin-1"><strong>Засновник Crowdin</strong></h3><p><a href="https://crowdin.com/page/about-crowdin">Сергій Дмитришин</a> — засновник та генеральний директор Crowdin. Він запустив компанію в 2009 році, і наразі вона має понад 2 мільйони зареєстрованих користувачів у 160+ країнах.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/Founder-and-CEO-of-Crowdin.png" class="kg-image" alt="Founder-and-CEO-of-Crowdin" width="600" height="400" loading="lazy"><figcaption><a href="https://crowdin.com/page/about-crowdin">Сергій Дмитришин</a> — засновник та генеральний директор Crowdin.</figcaption></figure><p>Ми мали можливість зустрітися з ним і запитати, як він би описав Crowdin п’ятьма словами. Він відповів:</p><blockquote>Постійна локалізація для сучасних компаній.<br>— Сергій Дмитришин</blockquote><p>Його бачення полягає в тому, щоб Crowdin був найкращою платформою для локалізації продуктів, які постійно еволюціонують, та для проєктів, які можуть ніколи не мати остаточної версії, оскільки їх постійно вдосконалюють, розширюють і оновлюють.</p><p>freeCodeCamp є прикладом цього. Ми постійно додаємо та оновлюємо матеріал, тому нам потрібний ефективний та гнучкий процес локалізації, щоб наша платформа була доступною та оновленою для глобальної спільноти.</p><p><a href="https://crowdin.com/page/about-crowdin">Основною метою</a> Crowdin є:</p><blockquote>розширення потенціалу гнучкої локалізації.</blockquote><p>Але що таке гнучка локалізація? Давайте розглянемо.</p><h3 id="--6"><strong>Що таке гнучка локалізація?</strong></h3><p>Гнучка локалізація — це процес, в якому локалізація включена в гнучкий цикл розробки продукту з метою локалізації продукту якнайшвидше, оскільки він розвивається.</p><p>💡 <strong>Важливо<strong>:</strong> </strong>гнучкий цикл розробки продукту — це цикл, в якому продукт постійно оновлюється в ітеративному методі.</p><p>Процес гнучкої локалізації відрізняється від процесу традиційної локалізації тим, що переклади не лише пишуться один раз і потім додаються до кінцевого продукту, а постійно додаються та оновлюються зі змінами продукту.</p><p>Звучить чудово, правда ж?</p><p>Але постійні оновлення також вимагають постійного керування, командної роботи, завантаження та скачування файлів, розгортання платформ і так далі.</p><p>Цей процес може швидко ускладнитися, якщо ваша команда не має необхідних інструментів. Але з такою платформою керування локалізацією, як Crowdin, ви та ваша команда можете зекономити час та ефективно досягти своїх цілей.</p><h3 id="-crowdin-2"><strong>Переваги Crowdin</strong></h3><p>Розглянемо деякі причини, чому варто використовувати Crowdin:</p><ul><li>ви можете приєднати свій проєкт до зовнішніх служб через інтеграції, щоб автоматизувати частину процесу локалізації;</li><li>ви можете зберігати свої переклади на їхніх хмарних службах і надавати доступ членам команди та волонтерам з усього світу;</li><li>ви можете автоматично генерувати машинні переклади при створенні матеріалу і попросити перекладачів перевірити та відредагувати їх, що заощаджує час;</li><li>ваша команда може перевіряти якість та формат перекладів за допомогою функцій контролю якості, перевірки орфографії та редагування;</li><li>ви можете генерувати звіти, створювати власні робочі процеси, спілкуватися з членами команди внутрішньо, призначати посади та дозволи, запрошувати нових учасників і багато іншого.</li></ul><p>Простими словами, це платформа, яка зробить процес локалізації набагато простішим для вас та вашої команди.</p><h3 id="-crowdin-3"><strong>Безоплатний план Crowdin</strong></h3><p>Crowdin чудовий тим, що пропонує повністю безоплатний план з усіма основними функціями, щоб перекладачі розпочали локалізацію матеріалу.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/crowdin-free-plan.png" class="kg-image" alt="crowdin-free-plan" width="600" height="400" loading="lazy"><figcaption>Безоплатні функції на Crowdin.</figcaption></figure><p>Так, це безоплатно! Вам потрібно лише створити обліковий запис, і ви зможете:</p><ul><li>створити необмежену кількість відкритих проєктів, які можуть бачити та перекладати інші користувачі;</li><li>додати необмежену кількість перекладачів до своїх відкритих проєктів;</li><li>створити один закритий проєкт;</li><li>розмістити до 60 000 слів у своїх перекладах;</li><li>використовувати корисні функції для підвищення ефективності перекладачів;</li><li>додати одну інтеграцію до свого проєкту (згодом ми їх розглянемо). </li></ul><p>Коли ви реєструєтеся та створюєте свій обліковий запис, ви також можете розпочати 14-денний безоплатний випробувальний період командного плану, а також 30-денний випробувальний період для бізнес-плану.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/free-trial.png" class="kg-image" alt="free-trial" width="600" height="400" loading="lazy"><figcaption>Часті питання (ЧаПи).</figcaption></figure><p>На Crowdin також є <a href="https://crowdin.com/pricing#annual">інші плани</a>, щоб відповідати вашим потребам.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/crowdin-pricing.png" class="kg-image" alt="crowdin-pricing" width="600" height="400" loading="lazy"><figcaption>Плани, які можна обрати.</figcaption></figure><h3 id="crowdin-"><strong>Crowdin для відкритих проєктів та навчальних закладів</strong></h3><p>Як неприбуткова організація, freeCodeCamp має спеціальну ліцензію, яку Crowdin надає проєктам з відкритим вихідним кодом та навчальним закладам для підтримки їхньої місії.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/crowdin-for-nonprofits.png" class="kg-image" alt="crowdin-for-nonprofits" width="600" height="400" loading="lazy"><figcaption>Часті питання (ЧаПи).</figcaption></figure><p>Якщо ви представляєте відкритий проєкт або навчальний заклад, ви можете зв’язатися з Crowdin для запиту на <a href="https://crowdin.com/page/open-source-project-setup-request">ліцензію відкритого коду</a> або <a href="https://crowdin.com/page/academic-license-project-setup-request">ліцензію для академічних потреб</a>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/crowdin-for-open-source.png" class="kg-image" alt="crowdin-for-open-source" width="600" height="400" loading="lazy"><figcaption>Crowdin для відкритих проєктів.</figcaption></figure><p>Команда Crowdin допоможе вам та вашій організації.</p><!--kg-card-begin: html--><h3 id="важливі-терміни-при-використанні-crowdin">🔶 Важливі терміни при використанні Crowdin</h3><!--kg-card-end: html--><p>Перш ніж ми зануримося в практику, трішки поговоримо про важливі терміни для роботи з платформами керування локалізацією. <br><br>Ви часто зустрічатимете ці терміни в наступних розділах, тому давайте розглянемо їх детальніше. </p><h3 id="--7"><strong>Рядки</strong></h3><p>Коли ви завантажуєте матеріал на Crowdin, платформа повинна розділити текст на менші частини, які можна перекладати та зберігати окремо, доки всі переклади не будуть готові. Ці частини тексту називають «рядками». Після того, як вони будуть перекладені та затверджені, їх можна об’єднати, щоб згенерувати локалізовану версію матеріалу.</p><p>💡 <strong>Важливо:</strong> рядки можна вважати найменшими одиницями процесу перекладу. Ми не перекладаємо текст слово за слово. Ми перекладаємо його рядок за рядком. </p><h3 id="--8"><strong>Вихідна мова</strong></h3><p>Вихідна мова — це мова оригіналу. Наприклад, вихідною мовою freeCodeCamp є англійська, оскільки навчальна програма та документація створюються англійською мовою.</p><h3 id="--9"><strong>Цільова мова</strong></h3><p>Це мова, на яку перекладається матеріал. Наприклад, проєкти freeCodeCamp мають різні цільові мови, оскільки ми перекладаємо матеріал різними мовами.</p><h3 id="-tm--1"><strong>Пам’ять перекладів (TM)</strong></h3><p>Це схоже на базу даних, де ми зберігаємо всі раніше перекладені частини проєкту. Ми можемо зберігати речення, абзаци або інші одиниці тексту. Мета полягає в тому, щоб повторно використати ті ж самі переклади пізніше. Це функція, яка може зекономити багато часу, оскільки на вибір збереженого перекладу зазвичай потрібно всього кілька секунд. Його можна відредагувати за необхідності, але у нас все одно буде основа для роботи.</p><h3 id="-mt--1"><strong>Машинний переклад (MT)</strong></h3><p>Цей процес включає автоматичний переклад матеріалу без будь-якого втручання людини. Зазвичай в цьому процесі беруть участь штучний інтелект та машинне навчання. Перекладачі та редактори можуть взяти переклади, створені комп’ютером, та адаптувати або виправити їх за потреби.</p><p>💡 <strong>Важливо:</strong> будь ласка, майте на увазі, що пам’ять перекладів (TM) та машинний переклад (MT) відрізняються, хоча їхні абревіатури дуже схожі. Це може бути трохи заплутано спочатку, але завжди пам’ятайте, що «memory» (<em>укр.</em> пам’ять) вказує на базу даних перекладу, а «machine» (<em>укр.</em> машина) вказує на автоматизований процес перекладу.</p><h3 id="-qa"><strong>Перевірка QA</strong></h3><p>QA означає «Quality Assurance» (<em>укр.</em> забезпечення якості). Це процес перевірки перекладу на правильний формат та орфографію. На Crowdin є багато функцій QA, які допомагають знайти та виправити потенційні помилки.</p><h3 id="--10"><strong>Глосарій</strong></h3><p>Це база даних важливих термінів проєкту з визначеннями. Мета створення та підтримки глосарію полягає в тому, щоб надати перекладачам більше контексту щодо термінів та допомогти обрати найточніший переклад.</p><h3 id="--11"><strong>Знімок екрана</strong></h3><p>Картинка того, що ви можете бачити на екрані свого комп’ютера у певний момент. Зберігається як файл зображення.</p><h3 id="--12"><strong>Краудсорсинг</strong></h3><p>Це практика локалізації на основі співпраці. Основна ідея полягає в тому, що якщо ви є організацією і ваша мета — перекласти матеріал різними мовами, ви можете попросити допомоги у своєї спільноти. Наприклад, переклад freeCodeCamp є прикладом краудсорсингу.</p><h3 id="--13"><strong>Попередній переклад</strong></h3><p>Це автоматизована техніка, яку ви можете використовувати на Crowdin для попереднього автоматичного перекладу проєкту за допомогою машинного перекладу (MT) або пам’яті перекладів (TM). Після цього перекладачі можуть перевірити комп’ютерні переклади та відредагувати їх за необхідності.</p><h3 id="--14"><strong>Інтеграції</strong></h3><p>Це з’єднання, які ви можете створити між Crowdin та іншими програмами чи сервісами (наприклад, GitHub, Google Drive, Google Sheets тощо). Саме так сховище freeCodeCamp на GitHub залишається перекладеним. Коли ми додаємо нові рядки, вони автоматично завантажуються на Crowdin, і перекладачі можуть починати працювати над ними.</p><h3 id="--15"><strong>Вебхуки</strong></h3><p>Це автоматизовані «повідомлення», які застосунок або платформа надсилають іншому застосунку або платформі, коли відбуваються певні події. На Crowdin ви можете надіслати їх, коли переклади завершені, файли пройшли перевірку на помилки тощо.</p><h3 id="-cli-"><strong>Інтерфейс командного рядка (CLI)</strong></h3><p>Це інтерфейс користувача на основі тексту, який можна використовувати для взаємодії з комп’ютерною програмою, вводячи команди. На Crowdin є інтерфейс командного рядка (CLI) під назвою Crowdin Console Client, який дозволяє синхронізувати локалізаційний матеріал з проєктом.</p><h3 id="-api-"><strong>Прикладний програмний інтерфейс (API)</strong></h3><p>Це посередник, який дозволяє двом застосункам спілкуватися між собою, надсилаючи інформацію за певними протоколами. Crowdin також має API, який допомагає інтегрувати локалізацію в процес розробки.</p><h3 id="--16"><strong>Спеціальні змінні</strong></h3><p>На Crowdin можна вказати змінні, які не потрібно перекладати. Вони будуть виділені у вихідних рядках, які можуть бачити перекладачі. Щоб увімкнути цю функцію, вам потрібно звернутися до служби підтримки Crowdin.</p><!--kg-card-begin: html--><h3 id="початок-роботи-з-crowdin">🔶 Початок роботи з Crowdin</h3><!--kg-card-end: html--><p>Після цього детального, але надзвичайно важливого вступу до основ локалізації, прийшов час зануритися в практику та почати працювати на Crowdin.</p><!--kg-card-begin: html--><h3 id="як-створити-обліковий-запис на-crowdin">🔶 Як створити обліковий запис на Crowdin</h3><!--kg-card-end: html--><p>Якщо ваша мета — створити проєкт на Crowdin, вам потрібно створити обліковий запис, якщо його досі немає.</p><p>Для цього перейдіть на <a href="https://crowdin.com/">crowdin.com</a>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/crowdin-landing-page-signed-out.png" class="kg-image" alt="crowdin-landing-page-signed-out" width="600" height="400" loading="lazy"><figcaption>Головна сторінка Crowdin.</figcaption></figure><p>Натисніть на кнопку <code>Sign up</code>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/sign-up.png" class="kg-image" alt="sign-up" width="600" height="400" loading="lazy"><figcaption>Кнопка «Sign up».</figcaption></figure><p>Створіть обліковий запис, заповнивши та надіславши форму. Вам потрібно ввести свою електронну адресу, ім’я користувача та пароль. Також вам доведеться погодитися з умовами, поставивши відповідну позначку.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/sign-up-form.png" class="kg-image" alt="sign-up-form" width="600" height="400" loading="lazy"><figcaption>Форма реєстрації.</figcaption></figure><p><strong><strong>💡 </strong>Важливо<strong>:</strong></strong> після реєстрації потрібно підтвердити свою електронну адресу. Ви отримаєте електронний лист від Crowdin з активним посиланням, щоб перейти до свого профілю. Ви повинні побачити повідомлення про підтвердження про те, що адресу електронної пошти підтверджено.</p><p>Після реєстрації (або входу, якщо у вас вже є обліковий запис), ви побачите свій профіль Crowdin, де зможете керувати проєктами, командою, робочим процесом, активністю тощо.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/new-profile.png" class="kg-image" alt="new-profile" width="600" height="400" loading="lazy"><figcaption>Новий профіль на Crowdin.</figcaption></figure><p>🎉 Вітаємо! Тепер у вас є обліковий запис на Crowdin і ви готові налаштувати свій профіль.</p><!--kg-card-begin: html--><h3 id="як-налаштувати-профіль-на-crowdin">🔶 Як налаштувати профіль на Crowdin</h3><!--kg-card-end: html--><p>Щоб налаштувати свій профіль:</p><p>Натисніть на зображення профілю у верхньому правому куті та оберіть <code>Settings</code> зі спадного меню.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/settings-menu.png" class="kg-image" alt="settings-menu" width="600" height="400" loading="lazy"><figcaption>Налаштування профілю.</figcaption></figure><p>Ви побачите свій профіль та інформацію, яку можна налаштувати, а саме:</p><ul><li>зображення профілю;</li><li>повне ім’я, ім’я користувача та електронна адреса;</li><li>компанія та посада;</li><li>стать;</li><li>коротка автобіографія;</li><li>мова, часовий пояс та формат часу;</li><li>обрані мови;</li><li>тема (світла, темна або відповідно до місцевого часу);</li><li>приватність. За замовчуванням профіль є публічним. Встановіть цю опцію, якщо хочете зробити свій профіль приватним.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/black-profile-1.png" class="kg-image" alt="black-profile-1" width="600" height="400" loading="lazy"><figcaption>Account Settings &gt; Profile.</figcaption></figure><p>💡 <strong>Важливо<strong>:</strong></strong> з цієї сторінки також можна видалити свій обліковий запис. Внизу є червона кнопка та попередження про наслідки. Натискайте на цю кнопку лише тоді, коли абсолютно впевнені, що потрібно видалити всі проєкти та пов’язані з ними дані.</p><!--kg-card-begin: html--><h3 id="як-створити-проєкт-на-crowdin">🔶 Як створити проєкт на Crowdin</h3><!--kg-card-end: html--><p>Тепер ви знаєте, як налаштувати свій профіль, тому давайте створимо проєкт. Ви можете створити проєкт зі своєї сторінки профілю.</p><p>Якщо ви перебуваєте на іншій частині платформи, можете повернутися до профілю, натиснувши на своє зображення профілю у верхньому правому куті та обравши <code>Profile</code>, як показано нижче:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/go-back-to-profile.png" class="kg-image" alt="go-back-to-profile" width="600" height="400" loading="lazy"><figcaption>Сторінка профілю.</figcaption></figure><p>Щоб створити проєкт, натисніть на кнопку <code>Create Project</code> (зелену або сіру, вони еквівалентні).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/create-a-profile.png" class="kg-image" alt="create-a-profile" width="600" height="400" loading="lazy"><figcaption>Зелена кнопка «Create Project».</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/create-a-profile-2-1.png" class="kg-image" alt="create-a-profile-2-1" width="600" height="400" loading="lazy"><figcaption>Сіра кнопка «Create Project».</figcaption></figure><p>Ви побачите сторінку, де потрібно заповнити основну інформацію про проєкт, а саме:</p><ul><li>назва;</li><li>адреса проєкту. Якщо адреса проєкту складається з декількох слів, відокремте їх дефісами (-);</li><li>налаштування приватності (публічний чи приватний);</li><li>вихідна мова;</li><li>цільові мови.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/create-a-project.png" class="kg-image" alt="create-a-project" width="600" height="400" loading="lazy"><figcaption>Створення проєкту.</figcaption></figure><p>💡 <strong>Важливо<strong>:</strong></strong> адреса проєкту має бути унікальною. Вона автоматично заповнюється, коли ви вводите назву проєкту. Якщо вона вже зайнята іншим користувачем, ви побачите червоне попередження і потрібно буде обрати іншу адресу.</p><p>Ви можете обрати будь-яку кількість цільових мов. Просто позначте їх прапорцями та вони будуть додані.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/target-languages.png" class="kg-image" alt="target-languages" width="600" height="400" loading="lazy"><figcaption>Цільові мови.</figcaption></figure><p>Ось що ви побачите при виборі цільових мов:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/target-languages-selected.png" class="kg-image" alt="target-languages-selected" width="600" height="400" loading="lazy"><figcaption>Вибір цільових мов.</figcaption></figure><p>У вас також є можливість автоматично заповнити вибір 30-тьма найпопулярнішими мовами:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/select-top-30-languages.png" class="kg-image" alt="select-top-30-languages" width="600" height="400" loading="lazy"><figcaption>Оберіть «Select Top 30».</figcaption></figure><p>💡 <strong>Важливо<strong>: </strong></strong>ви також можете створити власні мови або скопіювати вибір, зроблений для іншого проєкту.</p><p>Якщо ви оберете додати власну мову, ви побачите це:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/adding-a-custom-language.png" class="kg-image" alt="adding-a-custom-language" width="600" height="400" loading="lazy"><figcaption>Додавання власної мови.</figcaption></figure><p>Оскільки це абсолютно власна мова, вам потрібно вказати:</p><ul><li>назву мови;</li><li>чи це діалект іншої мови;</li><li>код для цієї мови на Crowdin;</li><li>трьохлітерний код;</li><li>код локалі;</li><li>чи текст буде записуватися зліва направо чи справа наліво;</li><li>форму множини.</li></ul><p>Після заповнення усієї інформації можна створити проєкт. Просто натисніть на кнопку <code>Create Project</code> внизу сторінки.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/create-project.png" class="kg-image" alt="create-project" width="600" height="400" loading="lazy"></figure><p>💡 <strong>Важливо<strong>: </strong></strong>ви також можете натиснути на <code>Cancel</code> і повернутися до цієї сторінки, якщо хочете почати спочатку.</p><p>Тепер ви можете бачити свій проєкт. Звичайно, спочатку він буде порожнім, але не хвилюйтеся. Ми займемося цим вже зараз. 😉</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/project-dashboard.png" class="kg-image" alt="project-dashboard" width="600" height="400" loading="lazy"><figcaption>Новий проєкт.</figcaption></figure><!--kg-card-begin: html--><h3 id="огляд-проєкту">🔶 Огляд проєкту</h3><!--kg-card-end: html--><p>Швидко оглянемо проєкт.</p><p>Зверху ви бачите назву проєкту та його поточні налаштування приватності. Мій демопроєкт є приватним. На безоплатному обліковому записі Crowdin можна створити необмежену кількість публічних проєктів або один приватний проєкт.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/project-dashboard-name.png" class="kg-image" alt="project-dashboard-name" width="600" height="400" loading="lazy"></figure><p>Поруч з назвою проєкту ви побачите дві кнопки: <code>Invite People</code> та <code>Buy Translations</code>.</p><p>Ви можете запросити членів команди приєднатися до проєкту (ми розглянемо, як це зробити), а також купити переклади від Crowdin.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/project-dashboard-buttons.png" class="kg-image" alt="project-dashboard-buttons" width="600" height="400" loading="lazy"></figure><p>Ви також знайдете всі вкладки, які потрібні для доступу до інструментів.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/project-dashboard-tabs.png" class="kg-image" alt="project-dashboard-tabs" width="600" height="400" loading="lazy"></figure><p>За замовчуванням ви знаходитесь на вкладці <code>Sources</code>, де можете побачити файли, які ви завантажили, та рядки проєкту.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/project-dashboard-sources.png" class="kg-image" alt="project-dashboard-sources" width="600" height="400" loading="lazy"></figure><p><strong><strong>💡 </strong>Важливо<strong>:</strong></strong> ви також зможете створювати папки та додавати файли.</p><p>Розглянемо інші вкладки.</p><h4 id="-dashboard-"><strong>Вкладка «Dashboard»</strong></h4><p>Тут ви побачите список цільових мов проєкту.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/dashboard-target-languages.png" class="kg-image" alt="dashboard-target-languages" width="600" height="400" loading="lazy"><figcaption>Вкладка «Dashboard».</figcaption></figure><h4 id="-translations-"><strong>Вкладка «Translations»</strong></h4><p>Тут ви можете завантажити наявні переклади, скачати переклади як ZIP-файл, експортувати матеріал в обраному файлі та налаштувати доставку вмісту по повітрю.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translations-tab.png" class="kg-image" alt="translations-tab" width="600" height="400" loading="lazy"><figcaption>Вкладка «Translations».</figcaption></figure><h4 id="-screenshots-"><strong>Вкладка «Screenshots»</strong></h4><p>Тут ви можете завантажити знімки екрану свого проєкту, щоб надати перекладачам більше контексту про рядки, які вони перекладають.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/screenshots-tab.png" class="kg-image" alt="screenshots-tab" width="600" height="400" loading="lazy"><figcaption>Вкладка «Screenshots».</figcaption></figure><h4 id="-tasks-"><strong>Вкладка «Tasks»</strong></h4><p>Тут ви можете створити та призначити завдання своїй команді.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/tasks-tab.png" class="kg-image" alt="tasks-tab" width="600" height="400" loading="lazy"><figcaption>Вкладка «Tasks».</figcaption></figure><h4 id="-members-"><strong>Вкладка «Members»</strong></h4><p>Тут ви можете побачити всіх членів проєкту з відповідними посадами, датами приєднання до проєкту та діями, які ви можете виконати щодо них.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/members-tab.png" class="kg-image" alt="members-tab" width="600" height="400" loading="lazy"><figcaption>Вкладка «Members».</figcaption></figure><h4 id="-integrations-"><strong>Вкладка «Integrations»</strong></h4><p>Тут ви можете додати інтеграції до свого проєкту та побачити всі поточні інтеграції.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/integrations-tab.png" class="kg-image" alt="integrations-tab" width="600" height="400" loading="lazy"><figcaption>Вкладка «Integrations».</figcaption></figure><h4 id="-reports-"><strong>Вкладка «Reports»</strong></h4><p>Тут ви можете переглядати та генерувати звіти про діяльність свого проєкту, включно з перекладом та редагуванням.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/reports-tab.png" class="kg-image" alt="reports-tab" width="600" height="400" loading="lazy"><figcaption>Вкладка «Reports».</figcaption></figure><h4 id="-activity-"><strong>Вкладка «Activity»</strong></h4><p>Тут ви можете побачити активність проєкту.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/activity-tab.png" class="kg-image" alt="activity-tab" width="600" height="400" loading="lazy"><figcaption>Вкладка «Activity».</figcaption></figure><h4 id="-discussions-"><strong>Вкладка «Discussions»</strong></h4><p>Тут ви можете відкривати теми для обговорення проєкту зі своєю командою.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/discussions-tab.png" class="kg-image" alt="discussions-tab" width="600" height="400" loading="lazy"><figcaption>Вкладка «Discussions».</figcaption></figure><h4 id="-tools-"><strong>Вкладка «Tools»</strong></h4><p>Тут ви знайдете більше інформації про CLI, API, вебхуки та Crowdin in-context (інструмент для перекладу вебзастосунків із переглядом у реальному часі).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/tools-tab.png" class="kg-image" alt="tools-tab" width="600" height="400" loading="lazy"><figcaption>Вкладка «Tools».</figcaption></figure><h4 id="-settings-"><strong>Вкладка «Settings»</strong></h4><p>Тут ви можете змінити налаштування проєкту.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/settings-tab.png" class="kg-image" alt="settings-tab" width="600" height="400" loading="lazy"><figcaption>Вкладка «Settings».</figcaption></figure><p>Говорячи про налаштування проєкту, давайте зануримось в налаштування, які ви можете змінити для свого проєкту.</p><!--kg-card-begin: html--><h3 id="як-змінити-налаштування-проєкту-на-crowdin">🔶 Як змінити налаштування проєкту на Crowdin</h3><!--kg-card-end: html--><p>Ви знайдете різні категорії налаштувань проєкту.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/settings-tab-1.png" class="kg-image" alt="settings-tab-1" width="600" height="400" loading="lazy"><figcaption>Вкладка «Settings».</figcaption></figure><h4 id="general"><strong>General</strong></h4><p>До загальних налаштувань належать:</p><ul><li>назва;</li><li>публічний опис;</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/general-settings-1.png" class="kg-image" alt="general-settings-1" width="600" height="400" loading="lazy"><figcaption>Загальні налаштування.</figcaption></figure><ul><li>брендинг, включно з власним доменом та логотипом;</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/branding-1.png" class="kg-image" alt="branding-1" width="600" height="400" loading="lazy"><figcaption>Налаштування брендингу.</figcaption></figure><ul><li>значки для відтворення прогресу процесу локалізації;</li><li>можливість видалити проєкт.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/Screenshot-2023-09-18-at-8.25.48-PM.png" class="kg-image" alt="Screenshot-2023-09-18-at-8.25.48-PM" width="600" height="400" loading="lazy"><figcaption>Значки та видалення проєкту.</figcaption></figure><h4 id="privacy-collaboration"><strong>Privacy &amp; collaboration</strong></h4><p>У цій категорії ви знайдете налаштування для керування приватністю та сповіщеннями проєкту.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/privacy-and-collaboration.png" class="kg-image" alt="privacy-and-collaboration" width="600" height="400" loading="lazy"><figcaption>Категорія «Privacy &amp; collaboration».</figcaption></figure><p>Ви можете керувати видимістю проєкту в налаштуваннях <code>Project visibility</code>. Проєкт можна налаштувати як публічний або приватний.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/project-visibility.png" class="kg-image" alt="project-visibility" width="600" height="400" loading="lazy"></figure><p>Далі ми маємо налаштування приватності. Ви можете прочитати короткий опис кожного з цих налаштувань під відповідним пунктом. Щоб увімкнути налаштування, поставте галочку біля нього.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/privacy-settings.png" class="kg-image" alt="privacy-settings" width="600" height="400" loading="lazy"><figcaption>Налаштування приватності за замовчуванням. Їх можна налаштувати відповідно до ваших потреб.</figcaption></figure><p>Зрештою, можна налаштувати сповіщення для перекладачів, менеджерів проєкту та розробників. Просто відмітьте сповіщення, які хочете увімкнути.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/Screenshot-2023-09-18-at-8.29.36-PM.png" class="kg-image" alt="Screenshot-2023-09-18-at-8.29.36-PM" width="600" height="400" loading="lazy"><figcaption>Налаштування сповіщень.</figcaption></figure><h4 id="languages"><strong>Languages</strong></h4><p>У категорії мов ви можете змінити вихідну та цільові мови свого проєкту.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/languages-settings.png" class="kg-image" alt="languages-settings" width="600" height="400" loading="lazy"><figcaption>Категорія «Languages».</figcaption></figure><h4 id="qa-checks"><strong>QA Checks</strong></h4><p>Я ж обіцяла, що це буде важливо? Так ось. У категорії перевірки якості (QA) ви можете увімкнути перевірку якості (QA) та вибрати, які саме перевірки вас цікавлять.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/qa-checks.png" class="kg-image" alt="qa-checks" width="600" height="400" loading="lazy"><figcaption>Категорія «QA Checks».</figcaption></figure><p>Crowdin <a href="https://support.crowdin.com/qa-checks/">зазначає</a>:</p><blockquote>Основна мета перевірок якості (QA) — допомогти ефективно вирішити мовні аспекти у перекладах та забезпечити їхнє форматування так само, як у вихідних рядках, щоб вони ідеально підходили для інтерфейсу користувача. До деяких типових проблем перевірки якості (QA) належать пропущені коми, зайві пробіли або орфографічні помилки.<br><br>Всі питання перевірки якості (QA) рекомендовано переглянути і вирішити до побудови проєкту та скачування перекладу.</blockquote><p>До перевірок якості (QA) належать:</p><ul><li>порожні переклади;</li><li>проблеми з довжиною;</li><li>неспівпадіння тегів;</li><li>неспівпадіння пробілів;</li><li>неспівпадіння змінних;</li><li>неспівпадіння пунктуації;</li><li>неспівпадіння регістру символів;</li><li>неспівпадіння спецсимволів;</li><li>неправильний переклад, визначений учасниками проєкту;</li><li>орфографічні помилки;</li><li>помилки синтаксису ICU;</li><li>термінологія не відповідає глосарію проєкту;</li><li>дубльований переклад;</li><li>синтаксис Android.</li></ul><p>Після того, як ви вибрали перевірки якості (QA), які хочете увімкнути, просто натисніть на кнопку <code>Save</code>, і зміни будуть збережені.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/save-qa-checks.png" class="kg-image" alt="save-qa-checks" width="600" height="400" loading="lazy"><figcaption>Кнопка «Save».</figcaption></figure><h4 id="translation-memories"><strong>Translation Memories</strong></h4><p>Ви також знайдете категорію налаштувань пам’яті перекладів.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translation-memories.png" class="kg-image" alt="translation-memories" width="600" height="400" loading="lazy"><figcaption>Категорія «Translation Memories».</figcaption></figure><p>Ми поговоримо про пам’ять перекладів більш детально пізніше, але знайте, що це місце, де ви можете змінити налаштування цієї функції.</p><h4 id="glossaries"><strong>Glossaries</strong></h4><p>Ви можете керувати своїми глосаріями в категорії <code>Glossaries</code>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/glossaries.png" class="kg-image" alt="glossaries" width="600" height="400" loading="lazy"><figcaption>Категорія «Glossaries».</figcaption></figure><p>Ви можете перевірити призначені глосарії та натиснути на посилання, щоб переглянути записи кожного глосарію. Вгорі ви також знайдете посилання на <a href="https://crowdin.com/store/apps/glossary-translate-app">застосунок для перекладу глосарію</a>.</p><h4 id="import"><strong>Import</strong></h4><p>На Crowdin ви можете імпортувати вихідні рядки та змінити налаштування (наприклад, обробку дубльованих рядків та підрахунок слів).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/import-category.png" class="kg-image" alt="import-category" width="600" height="400" loading="lazy"><figcaption>Налаштування імпорту.</figcaption></figure><h4 id="export"><strong>Export</strong></h4><p>Категорія експорту має корисні налаштування для експорту перекладених файлів.</p><p>Ви можете:</p><ul><li>зберегти інформацію контексту у файлах;</li><li>пропустити неперекладені рядки;</li><li>пропустити неперекладені файли;</li><li>експортувати лише затверджені переклади;</li><li>автоматично заповнити регіональні діалекти.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/export.png" class="kg-image" alt="export" width="600" height="400" loading="lazy"><figcaption>Налаштування експорту.</figcaption></figure><h4 id="labels"><strong>Labels</strong></h4><p>Мітки можуть бути корисними для надання контексту рядкам та їх розподілу за темами. Вони можуть бути корисними, якщо ви хочете знайти певні рядки.</p><p>Мітки можна додати у цій категорії налаштувань:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/labels.png" class="kg-image" alt="labels" width="600" height="400" loading="lazy"><figcaption>Налаштування міток.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/creating-a-label.png" class="kg-image" alt="creating-a-label" width="600" height="400" loading="lazy"><figcaption>Створення нової мітки.</figcaption></figure><h4 id="parser-configuration"><strong>Parser configuration</strong></h4><p>За допомогою налаштувань парсера ви можете встановити, як Crowdin імпортує та експортує обрані типи файлів.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/parser-configuration.png" class="kg-image" alt="parser-configuration" width="600" height="400" loading="lazy"><figcaption>Категорія «Parser Configuration».</figcaption></figure><h4 id="file-processorrs"><strong>File Processorrs</strong></h4><p>Остання група в налаштуваннях — це обробники файлів, які дозволяють налаштувати спосіб обробки підтримуваних форматів файлів.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/file-processors.png" class="kg-image" alt="file-processors" width="600" height="400" loading="lazy"><figcaption>Категорія «File Processors».</figcaption></figure><!--kg-card-begin: html--><h3 id="як-видалити-проєкт-на-crowdin">🔶 Як видалити проєкт на Crowdin</h3><!--kg-card-end: html--><p>Якщо вам потрібно видалити проєкт, перейдіть до вкладки <code>Settings</code>, а потім до вкладки <code>General</code>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/settings-tab-1.png" class="kg-image" alt="settings-tab-1" width="600" height="400" loading="lazy"><figcaption>Settings &gt; General.</figcaption></figure><p>Внизу ви знайдете червону кнопку <code>Delete Project</code>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/delete-a-project-2.png" class="kg-image" alt="delete-a-project-2" width="600" height="400" loading="lazy"><figcaption>Видалення проєкту.</figcaption></figure><!--kg-card-begin: html--><h3 id="як-завантажити-файли-до-проєкту-на-crowdin">🔶 Як завантажити файли до проєкту на Crowdin</h3><!--kg-card-end: html--><p>Тепер ви знаєте, як змінити налаштування проєкту, тому давайте додамо файл до проєкту. Ви можете завантажити файли до проєкту вручну або автоматизувати цей процес завдяки інтеграціям.</p><h3 id="--17"><strong>Як завантажити файли вручну</strong></h3><p>Завантажимо звичайний PDF-файл з текстом та зображеннями.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/demo-pdf-document-1.png" class="kg-image" alt="demo-pdf-document-1" width="600" height="400" loading="lazy"><figcaption>Демофайл PDF. Перекладемо його на Crowdin.</figcaption></figure><p>Щоб завантажити файли:</p><ol><li>Перейдіть до проєкту.</li><li>Перейдіть до вкладки <code>Sources</code>.</li><li>Натисніть на зелену кнопку <code>Add File</code> або сіру кнопку <code>Upload Files</code> (див. знімок екрана нижче).</li><li>Виберіть файл, який потрібно завантажити з файлової системи.</li></ol><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/upload-files-sources.png" class="kg-image" alt="upload-files-sources" width="600" height="400" loading="lazy"><figcaption>Завантаження файлів.</figcaption></figure><p>💡 <strong>Важливо<strong>:</strong></strong> щоб дізнатись, як працює Crowdin, ви можете додати зразки від Crowdin, натиснувши на <code>Use Samples</code>.</p><p>Після завантаження файлу ви побачите його в списку:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/upload-files.png" class="kg-image" alt="upload-files" width="600" height="400" loading="lazy"><figcaption>Завантаження файлу.</figcaption></figure><p>Можливо, вам доведеться почекати кілька секунд, перш ніж файл буде оброблено. Потім ви побачите загальну кількість рядків у своєму файлі.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/upload-finished.png" class="kg-image" alt="upload-finished" width="600" height="400" loading="lazy"><figcaption>Завантаження завершено.</figcaption></figure><p>💡 <strong>Важливо<strong>: </strong></strong>ви можете перетягнути свій файл в область файлів у вкладці <code>Sources</code>, і ваш файл буде автоматично завантажено.</p><p>Якщо ви натиснете на три маленькі крапки праворуч, ви побачите більше опцій для цього файлу, включно з:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/uploaded-file-options.png" class="kg-image" alt="uploaded-file-options" width="600" height="400" loading="lazy"><figcaption>Додаткові опції.</figcaption></figure><ul><li>Settings (налаштування);</li><li>Progress (прогрес);</li><li>View strings (перегляд рядків);</li><li>Open in Editor (відкрити в редакторі);</li><li>Download source (скачати вихідний файл);</li><li>Rename (перейменувати);</li><li>Delete (видалити).</li></ul><h3 id="--18"><strong>Як завантажити файли автоматично</strong></h3><p>Одна з ключових особливостей Crowdin полягає в тому, наскільки легко підключати його до інших служб через інтеграції, щоб автоматично завантажувати файли та синхронізувати переклади.</p><p>Наприклад, у freeCodeCamp встановлено інтеграцію з GitHub, тому ми можемо автоматично синхронізувати файли проєкту, коли додаємо нові рядки, які потрібно перекласти на Crowdin.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/github-integration-2.png" class="kg-image" alt="github-integration-2" width="600" height="400" loading="lazy"><figcaption>Інтеграція GitHub.</figcaption></figure><p>Ви можете знайти сотні інтеграцій у <a href="https://store.crowdin.com/">Crowdin Store</a> для підключення свого проєкту до зовнішніх служб.</p><p>Crowdin також має прикладний програмний інтерфейс (API) для розробників.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/crowdin-api.png" class="kg-image" alt="crowdin-api" width="600" height="400" loading="lazy"><figcaption><a href="https://developer.crowdin.com/api/v2/">Документація</a> Crowdin API.</figcaption></figure><p>Команда Crowdin <a href="https://developer.crowdin.com/api/v2/">описує</a> його як:</p><blockquote>Повнофункціональний REST API, який допомагає інтегрувати локалізацію у процес розробки. Кінцеві точки, які ми використовуємо, дозволяють легко робити виклики для отримання інформації та виконання необхідних дій.</blockquote><p>За допомогою цього API ви можете:</p><ul><li>створювати проєкти для перекладу;</li><li>додавати та оновлювати файли;</li><li>скачувати переклади та багато іншого.</li></ul><p>Це чудовий спосіб автоматизувати процес локалізації. Дізнайтеся більше про Crowdin API в <a href="https://developer.crowdin.com/api/v2/">офіційній документації</a>.</p><p>І третя опція автоматичного завантаження файлів — це використання інтерфейсу командного рядка (CLI).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/crowdin-cli-1.png" class="kg-image" alt="crowdin-cli-1" width="600" height="400" loading="lazy"><figcaption>Інтерфейс командного рядка Crowdin (CLI).</figcaption></figure><p>З цим інтерфейсом ви можете:</p><ul><li>автоматизувати процес завантаження файлів;</li><li>автоматично скачувати переклади та зберігати їх у відповідних місцях;</li><li>завантажувати наявні переклади;</li><li>інтегрувати Crowdin з іншими інструментами (наприклад, Git). </li></ul><p>Щоб дізнатися більше про Crowdin CLI, перегляньте <a href="https://www.youtube.com/watch?v=0duN4khpWjM">цю інструкцію</a>, створену командою Crowdin.</p><p>Тепер ви знаєте, як завантажувати файли на Crowdin вручну та автоматично, тому розберемось, як розпочати перекладати матеріал.</p><!--kg-card-begin: html--><h3 id="як-розпочати-перекладати">🔶 Як розпочати перекладати</h3><!--kg-card-end: html--><p>Коли файл завантажено, час розпочати переклад. Ви можете перекласти його власноруч або попросити команду.</p><p>💡 <strong>Важливо:</strong> ви можете призначити конкретні файли перекладачам та редакторам за допомогою функції <code>Tasks</code>.</p><p>Припустимо, що ви перекладаєте матеріал самостійно.</p><p>Для початку вам потрібно перейти на вкладку <code>Dashboard</code> та вибрати мову, на яку ви будете перекладати матеріал, зі списку цільових мов, які ви вибрали при створенні проєкту.</p><p>Для цього прикладу я виберу іспанську мову.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/list-of-target-languages.png" class="kg-image" alt="list-of-target-languages" width="600" height="400" loading="lazy"><figcaption>Вкладка «Dashboard».</figcaption></figure><p>Ви побачите всі файли свого проєкту для конкретної цільової мови.</p><p>На сторінці мови ви можете перевіряти прогрес перекладу та редагування кожного файлу, перекладати й редагувати, а також завантажувати переклад та вихідні файли.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/project-files-in-spanish.png" class="kg-image" alt="project-files-in-spanish" width="600" height="400" loading="lazy"><figcaption>Список файлів, які потрібно перекласти іспанською мовою.</figcaption></figure><p>Ви можете натиснути на назву файлу, який хочете перекласти. Ви перейдете на редактор перекладу і побачите файл у попередньому перегляді.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translation-editor.png" class="kg-image" alt="translation-editor" width="600" height="400" loading="lazy"><figcaption>Редактор перекладу.</figcaption></figure><p>Під час завантаження файлу Crowdin розділяє його на рядки. Цей процес може вимагати певних перетворень формату залежно від типу файлу, який ви завантажуєте.</p><p>Відповідно до <a href="https://support.crowdin.com/supported-formats/#converted-file-formats">документації Crowdin</a>:</p><blockquote>При імпорті деякі формати файлів автоматично конвертуються в інші формати для подальшого аналізу та обробки.<br><br>У таблиці нижче подано список початкових форматів файлів та формати файлів, у які вони конвертуються.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/file-formats-table.png" class="kg-image" alt="Image" width="600" height="400" loading="lazy"><figcaption>Конвертація форматів файлів. Зображення з <a href="https://support.crowdin.com/supported-formats/#converted-file-formats">документації Crowdin</a>.&nbsp;</figcaption></figure><p>Ми можемо бачити, що PDF-файли конвертуються у DOCX-файли — тип файлів, який зазвичай створюють у текстовому редакторі.</p><p>Для експорту файлів <a href="https://support.crowdin.com/supported-formats/#converted-file-formats">Crowdin також зазначає</a>:</p><blockquote>За замовчуванням ми експортуємо переклади в тому ж форматі, що й вихідні файли. Наприклад, якщо ви завантажуєте XML-файл на Crowdin, ви отримаєте експортований XML-файл.</blockquote><!--kg-card-begin: html--><h3 id="як-користуватися-редактором-перекладу">🔶 Як користуватися редактором перекладу</h3><!--kg-card-end: html--><p>Це макет редактора перекладу, який ви побачите за замовчуванням, коли натиснете на файл. Такий режим називають «Comfortable».</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translation-editor.png" class="kg-image" alt="translation-editor" width="600" height="400" loading="lazy"><figcaption>Редактор перекладу.</figcaption></figure><p>Він має чотири основні секції:</p><ul><li>ліва бокова панель (позначена фіолетовим);</li><li>верхня середня область (позначена жовтим);</li><li>нижня середня область (позначена оранжевим);</li><li>права бокова панель (позначена блакитним).</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translation-editor-sections.png" class="kg-image" alt="translation-editor-sections" width="600" height="400" loading="lazy"><figcaption>Редактор перекладу в режимі «Comfortable».</figcaption></figure><p>Розглянемо кожну секцію.</p><h3 id="--19"><strong>Ліва бокова панель</strong></h3><ul><li>виділена фіолетовим на малюнку вище;</li><li>показує всі рядки у документі та попередній перегляд вихідного файлу;</li><li>у верхній частині ви знайдете корисні інструменти, серед яких (зліва направо): пошук рядків у файлі, зміна вигляду рядків, виділення перекладених та неперекладених рядків, показ попереднього перегляду перекладу, перемикач масштабу та додавання рядка.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/toolbar-options.png" class="kg-image" alt="toolbar-options" width="600" height="400" loading="lazy"><figcaption>Панель інструментів у верхній частині лівої бокової панелі.</figcaption></figure><p>Якщо натиснути на першу кнопку після поля пошуку файлів, ви можете змінити вигляд рядків: так ви будете бачити список усіх рядків, а не попередній перегляд файлу.</p><p>Тепер ви побачите список усіх рядків:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/list-of-all-strings.png" class="kg-image" alt="list-of-all-strings" width="600" height="400" loading="lazy"><figcaption>Основний вигляд списку.</figcaption></figure><p>Ви можете знову натиснути на цю кнопку, щоб повернутися до попереднього режиму, де ви можете бачити рядки в оригінальному контексті та макеті вихідного файлу:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translation-editor.png" class="kg-image" alt="translation-editor" width="600" height="400" loading="lazy"><figcaption>Режим перекладу «Що бачите, те й отримуєте».</figcaption></figure><p>Як бачите, рядки виділені різними кольорами:</p><ul><li>червоний означає, що рядок не перекладений;</li><li>жовтий означає, що рядок частково перекладений;</li><li>блакитний означає, що рядок перекладений;</li><li>сірий означає, що рядок прихований і видимий тільки для менеджерів проєкту та редакторів.</li></ul><p>Коли ви почнете редагування рядків, ви також побачите:</p><ul><li>жовту галочку, якщо рядок частково затверджений (якщо деякі форми множини не затверджені);</li><li>зелену галочку, якщо рядок затверджений.</li></ul><p>Ви також можете побачити іконку коментаря, якщо хтось залишив коментар до рядка або позначив коментар як проблему.</p><h3 id="--20"><strong>Верхня середня область</strong></h3><ul><li>виділена жовтим на малюнку нижче;</li><li>це місце, де потрібно перекладати рядок. Вам потрібно лише вибрати його з лівої бокової панелі, і він з’явиться в цій області.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translation-editor-sections.png" class="kg-image" alt="translation-editor-sections" width="600" height="400" loading="lazy"><figcaption>Редактор перекладу в режимі «Comfortable».</figcaption></figure><p>Натиснемо на рядок і подивимося, що станеться:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/selecting-a-strings.png" class="kg-image" alt="selecting-a-strings" width="600" height="400" loading="lazy"><figcaption>Виберіть рядок.</figcaption></figure><p>Чудово! Рядок тепер вибраний як <code>Source String</code>, і ми можемо почати його перекладати:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/writing-translations.png" class="kg-image" alt="writing-translations" width="600" height="400" loading="lazy"><figcaption>Перекладіть рядок.</figcaption></figure><p>Три інструменти, які ви можете побачити у нижній частині (зліва направо):</p><ul><li><strong><strong>Copy Source:</strong> </strong>щоб зберегти початкову структуру рядка;</li><li><strong><strong>Clear:</strong></strong> щоб швидко видалити переклад;</li><li><strong><strong>Text Selection Mode:</strong></strong> щоб скопіювати частину перекладу з пам’яті перекладів (TM) або машинних перекладів (MT).</li></ul><p>Якщо натиснути на три крапки вгорі, ви побачите додаткові опції для рядка, зокрема:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/strings-translation-options.png" class="kg-image" alt="strings-translation-options" width="600" height="400" loading="lazy"><figcaption>Опції перекладу рядка.</figcaption></figure><ul><li>Hide String (приховати рядок);</li><li>Copy String URL (скопіювати посилання на рядок);</li><li>Copy Source Skeleton (скопіювати вихідний скелет);</li><li>Translation History (історія перекладів);</li><li>View String in Context (переглянути рядок у контексті).</li></ul><p>Коли ви пишете свій переклад, ви побачите його в попередньому перегляді. Рядок буде виділено жовтим, якщо його вибрано.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/preview-with-partially-translated-string.png" class="kg-image" alt="preview-with-partially-translated-string" width="600" height="400" loading="lazy"><figcaption>Переклад у попередньому перегляді (бокова панель). Перекладений рядок іспанською у попередньому перегляді.</figcaption></figure><p>Щоб зберегти свій переклад, натисніть на зелену кнопку <code>Save</code>.</p><p>Після цього ви можете перейти до наступного рядка, а раніше перекладений рядок буде виділений іншим кольором (блакитним).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translated-saved-string.png" class="kg-image" alt="translated-saved-string" width="600" height="400" loading="lazy"><figcaption>Збережений переклад.</figcaption></figure><p>Щоб повернутися до попереднього рядка, просто натисніть на нього або натисніть на ліву стрілку поруч із <code>Source String</code>.</p><p>Якщо повернутись до рядка, ви побачите щось нове у нижній середній області.</p><p>Давайте поговоримо про нижню середню область.</p><h3 id="--21"><strong>Нижня середня область</strong></h3><ul><li>виділена оранжевим на малюнку нижче;</li><li>ця секція містить переклади, зроблені іншими перекладачами (якщо такі є), пропозиції з пам’яті перекладів (TM), пропозиції машинного перекладу (MT) та переклади іншими мовами.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translation-editor-sections.png" class="kg-image" alt="translation-editor-sections" width="600" height="400" loading="lazy"><figcaption>Редактор перекладу в режимі «Comfortable».</figcaption></figure><p><strong><strong>💡 </strong>Важливо:</strong> якщо натиснути на запропонований переклад, то він автоматично з’явиться в полі введення.</p><p>Це поточний стан нашого проєкту. У нас є перекладений рядок, і ви можете побачити переклад іспанською у нижній середній секції (оранжева рамка нижче).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/back-to-translated-string.png" class="kg-image" alt="back-to-translated-string" width="600" height="400" loading="lazy"><figcaption>Нижня середня область.</figcaption></figure><p>Для кожного перекладу ви будете бачити:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/approve-string-translation.png" class="kg-image" alt="approve-string-translation" width="600" height="400" loading="lazy"><figcaption>Переклад.</figcaption></figure><ul><li>переклад цільовою мовою;</li><li>користувача Crowdin, який запропонував переклад;</li><li>коли переклад було збережено;</li><li>поточний рейтинг перекладу (інші члени проєкту можуть піднімати або знижувати рейтинг);</li><li>кнопка з галочкою для схвалення перекладу (для редакторів);</li><li>кнопка зі смітником для видалення перекладу.</li></ul><p>Якщо ви власник проєкту або маєте право на редагування, ви можете самостійно затвердити переклад рядка. Однак бажано, щоб хтось інший перевірив ваш переклад, щоб уникнути поширених помилок.</p><p>Щоб затвердити переклад, просто натисніть на галочку біля нього.</p><p>Тепер ви побачите затверджений рядок, виділений зеленим у попередньому перегляді:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/approved-string.png" class="kg-image" alt="approved-string" width="600" height="400" loading="lazy"><figcaption>Затверджений рядок, виділений зеленим.</figcaption></figure><p>Перекладений рядок тепер покаже, хто і коли затвердив його:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/back-to-approved-string-1.png" class="kg-image" alt="back-to-approved-string-1" width="600" height="400" loading="lazy"></figure><h3 id="--22"><strong>Права бокова панель</strong></h3><ul><li>виділена блакитним на малюнку нижче;</li><li>це місце, де ви можете писати коментарі, користуватись TM, шукати терміни у своєму глосарії, додавати нові застосунки та знаходити застосунки, які ви додали через <a href="https://crowdin.com/store/apps">Crowdin Store</a>.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translation-editor-sections.png" class="kg-image" alt="translation-editor-sections" width="600" height="400" loading="lazy"><figcaption>Редактор перекладу в режимі «Comfortable».</figcaption></figure><p>Щоб написати коментар, просто перейдіть до коментарів на боковій панелі та напишіть свій коментар у текстовому полі внизу. Ви можете позначити коментар як проблему, якщо потрібно.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/writing-a-comment-1.png" class="kg-image" alt="writing-a-comment-1" width="600" height="400" loading="lazy"><figcaption>Написання коментаря.</figcaption></figure><p>💡 <strong>Важливо<strong>:</strong></strong> коментар потрібно писати вихідною мовою проєкту, щоб інші члени команди та менеджери проєкту могли зрозуміти його.</p><p>Якщо натиснути на другу кнопку на цій боковій панелі, ви зможете користуватись пам’яттю перекладів серед попередніх перекладів.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translation-memory.png" class="kg-image" alt="translation-memory" width="600" height="400" loading="lazy"><figcaption>Пошук у пам’яті перекладів (TM).</figcaption></figure><p>За допомогою третьої кнопки ви можете шукати терміни, пов’язані з вибраним рядком, у глосарії.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/glossary.png" class="kg-image" alt="glossary" width="600" height="400" loading="lazy"><figcaption>Пошук термінів.</figcaption></figure><p><a href="https://support.crowdin.com/online-editor/#section-4">Crowdin</a> стверджує, що цей пошук чудовий, оскільки:</p><blockquote>Якщо конкретний термін відсутній у глосарії проєкту, система покаже пояснення з вікіпедії.</blockquote><p>Це може бути дуже корисно, щоб зрозуміти контекст терміну під час перекладу матеріалу.</p><p>Остання ккнопка — це значок плюс, який направить вас до Crowdin Store, де ви зможете знайти застосунки та інтеграції для свого проєкту й отримати доступ до них на боковій панелі.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/add-apps.png" class="kg-image" alt="add-apps" width="600" height="400" loading="lazy"><figcaption>Перейти до Crowdin Store.</figcaption></figure><!--kg-card-begin: html--><h3 id="режими-редактора-перекладу">🔶 Режими редактора перекладу</h3><!--kg-card-end: html--><p>Редактор перекладу має три режими, щоб налаштувати макет відповідно до ваших потреб: Comfortable, Side-by-Side та Multilingual.</p><h3 id="-comfortable-"><strong>Режим «Comfortable»</strong></h3><ul><li>переважно використовується для перекладів;</li><li>має чотири основні секції, які ми бачили у попередньому розділі.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/comfortable-mode.png" class="kg-image" alt="comfortable-mode" width="600" height="400" loading="lazy"><figcaption>Макет у режимі «Comfortable».</figcaption></figure><h3 id="--23"><strong>Як змінити режим</strong></h3><p>Щоб змінити режим, потрібно натиснути на іконку меню у верхньому лівому куті редактора перекладу:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/change-mode-1.png" class="kg-image" alt="change-mode-1" width="600" height="400" loading="lazy"><figcaption>Натисніть на іконку меню.</figcaption></figure><p>Потім натисніть на <code>View</code> та виберіть бажаний режим:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/view-change-mode.png" class="kg-image" alt="view-change-mode" width="600" height="400" loading="lazy"><figcaption>Змініть режим редактора.</figcaption></figure><h3 id="-side-by-side-"><strong>Режим «Side-by-Side»</strong></h3><ul><li>переважно використовується менеджерами та редакторами для затвердження найкращих перекладів, а також перекладачами для голосування за переклади.</li></ul><p>Перший раз, коли ви переключитеся на цей режим, ви побачите декілька корисних порад:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/tip-1.png" class="kg-image" alt="tip-1" width="600" height="400" loading="lazy"><figcaption>Оцінюйте або робіть переклади.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/tip-2.png" class="kg-image" alt="tip-2" width="600" height="400" loading="lazy"><figcaption>Затверджуйте декілька перекладів одночасно.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/tip-3.png" class="kg-image" alt="tip-3" width="600" height="400" loading="lazy"><figcaption>Перейдіть у режим «Comfortable», щоб робити нові переклади.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/tip-4.png" class="kg-image" alt="tip-4" width="600" height="400" loading="lazy"><figcaption>Це все, друзі!</figcaption></figure><p>Ось що ви побачите, коли перейдете до режиму «Side-by-Side». Будь ласка, витратьте трохи часу, щоб детально ознайомитися з цими змінами:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/side-by-side-mode.png" class="kg-image" alt="side-by-side-mode" width="600" height="400" loading="lazy"><figcaption>Режим «Side-by-Side».</figcaption></figure><p>Щоб побачити всі можливі стани рядків у режимі «Side-by-Side», повернімося до режиму «Comfortable», щоб перекласти та зберегти ще один рядок (але цього разу ми не будемо затверджувати його).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/string-translation-2.png" class="kg-image" alt="string-translation-2" width="600" height="400" loading="lazy"><figcaption>Перекладемо ще один рядок.</figcaption></figure><p>У режимі «Side-by-Side» у нас тепер є перекладений рядок, затверджений рядок і рядки, які ще потрібно перекласти.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/side-by-side-with-multiple-strings.png" class="kg-image" alt="side-by-side-with-multiple-strings" width="600" height="400" loading="lazy"><figcaption>Режим «Side-by-Side».</figcaption></figure><p>Почнемо з короткої екскурсії. У вас є чотири області, розмір яких можна змінювати відповідно до ваших потреб:</p><ul><li>у верхньому лівому куті ми знайдемо список рядків. Ви можете вибрати декілька рядків для масових операцій (наприклад, затвердження декількох перекладів одним натисканням);</li><li>у нижньому лівому куті ми знайдемо попередній перегляд вихідного файлу;</li><li>у верхньому правому куті ми знайдемо деталі рядка;</li><li>у нижньому правому куті ми знайдемо поточні переклади та пропозиції. Це дуже схоже на те, що ви бачите у режимі «Comfortable».</li></ul><h4 id="--24"><strong>Панель інструментів</strong></h4><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/toolbar.png" class="kg-image" alt="toolbar" width="600" height="400" loading="lazy"><figcaption>Панель інструментів.</figcaption></figure><p>У верхній частині списку рядків ви побачите декілька інструментів, зокрема (зліва направо):</p><ul><li>пошук рядка;</li><li>зміна критеріїв сортування;</li><li>довжина рядка в оригіналі та перекладі;</li><li>кнопка збереження;</li><li>кнопка скасування;</li><li>скопіювати вихідний рядок;</li><li>затвердити рядок;</li><li>додати рядок;</li><li>редагувати рядок;</li><li>більше опцій.</li></ul><p>Якщо відкрити меню «Більше опцій», натиснувши на три крапки, ви побачите більше корисних опцій для вибраних рядків.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/more-options-2.png" class="kg-image" alt="more-options-2" width="600" height="400" loading="lazy"><figcaption>Більше опцій.</figcaption></figure><h4 id="--25"><strong>Як відсортувати рядки</strong></h4><p>Ви помітите, що за замовчуванням рядки відсортовано за їхнім станом.</p><p><strong><strong>💡 </strong>Важливо<strong>:</strong></strong> неперекладені рядки з’являються першими в списку, тому ви не побачите рядки у порядку їхньої появи у вихідному файлі.</p><p>Ви можете змінити критерії сортування, натиснувши на іконку фільтра поруч із полем пошуку.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/filtering-strings.png" class="kg-image" alt="filtering-strings" width="600" height="400" loading="lazy"><figcaption>Сортування рядків.</figcaption></figure><p>У цьому режимі ви також побачите різні візуальні позначення стану кожного рядка.</p><p>Тут ми бачимо:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/types-of-strings.png" class="kg-image" alt="types-of-strings" width="600" height="400" loading="lazy"><figcaption>Стан рядка.</figcaption></figure><ul><li>неперекладений рядок, виділений червоним;</li><li>перекладений рядок, виділений блакитним;</li><li>затверджений рядок із зеленою галочкою;</li><li>прихований рядок, виділений сірим.</li></ul><h3 id="-multilingual-"><strong>Режим «Multilingual»</strong></h3><p> Тепер перейдемо до режиму «Multilingual». Цей режим переважно використовується перекладачами та редакторами для роботи з кількома мовами одночасно.</p><p>💡 <strong>Важливо<strong>: </strong></strong>ви можете працювати одночасно з максимум десятьма мовами.</p><p>Щоб перейти до цього режиму, натисніть на іконку головного меню у верхній частині. Потім оберіть <code>View</code> і виберіть <code>Multilingual</code>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/multilingual-view.png" class="kg-image" alt="multilingual-view" width="600" height="400" loading="lazy"><figcaption>Перейдіть до режиму «Multilingual».</figcaption></figure><p>Якщо ви вибрали режим «Multilingual», вам потрібно буде вибрати мови, з якими плануєте працювати.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/languages.png" class="kg-image" alt="languages" width="600" height="400" loading="lazy"><figcaption>Мови для режиму «Multilingual».</figcaption></figure><p>Давайте виберемо іспанську та японську, щоб побачити, як працює цей режим. Натисніть на них, а потім натисніть на кнопку <code>Apply</code>.</p><p>Ви повинні побачити наступне:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/multilingual-mode.png" class="kg-image" alt="multilingual-mode" width="600" height="400" loading="lazy"><figcaption>Режим «Multilingual».</figcaption></figure><p>Кожен рядок матиме текстове поле, де ви можете написати переклад для кожної з вибраних мов.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/string-in-multilingual.png" class="kg-image" alt="string-in-multilingual" width="600" height="400" loading="lazy"></figure><p>Якщо ви працюєте у багатомовному режимі, ви можете переключатися між двома можливими виглядами:</p><ul><li>вигляд списку;</li><li>вигляд сітки.</li></ul><p>Ось приклад вигляду списку:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/multilingual-mode.png" class="kg-image" alt="multilingual-mode" width="600" height="400" loading="lazy"><figcaption>Вигляд списку в режимі «Multilingual».</figcaption></figure><p>Щоб переключитися на вигляд сітки, потрібно натиснути на відповідну кнопку на панелі інструментів вгорі:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/multilingual-mode-copy.png" class="kg-image" alt="multilingual-mode-copy" width="600" height="400" loading="lazy"><figcaption>Зміна між виглядом списку та виглядом сітки.</figcaption></figure><p>Інші частини редактора та інструменти в цьому режимі дуже схожі на ті, про які ви вже знаєте у режимі «Side-by-Side».</p><!--kg-card-begin: html--><h3 id="як-перейти-до-іншого-файлу">🔶 Як перейти до іншого файлу</h3><!--kg-card-end: html--><p>Можливо, після перекладу всіх рядків у файлі вам потрібно буде перейти до іншого файлу. Це дуже легко зробити:</p><p>Натисніть на головне меню у верхньому лівому куті.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/main-menu-button.png" class="kg-image" alt="main-menu-button" width="600" height="400" loading="lazy"><figcaption>Головне меню.</figcaption></figure><p>Перейдіть до <code>File</code> та оберіть <code>Open...</code>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/open-another-file-1.png" class="kg-image" alt="open-another-file-1" width="600" height="400" loading="lazy"><figcaption>Відкрийте файл.</figcaption></figure><p>Виберіть файл, який хочете відкрити, та натисніть <code>Open</code> (або двічі натисніть на назву файлу).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/open-file-menu.png" class="kg-image" alt="open-file-menu" width="600" height="400" loading="lazy"><figcaption>Список файлів.</figcaption></figure><p>💡 <strong>Важливо<strong>:</strong></strong> ви можете швидше перейти до списку файлів, натиснувши одразу на назву файлу.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/file-click-on-file.png" class="kg-image" alt="file-click-on-file" width="600" height="400" loading="lazy"><figcaption>Натисніть на назву файлу.</figcaption></figure><p>Ви перейдете до обраного файлу.</p><!--kg-card-begin: html--><h3 id="як-переглянути-всі-рядки">🔶 Як переглянути всі рядки</h3><!--kg-card-end: html--><p>Якщо вам коли-небудь знадобиться побачити список усіх рядків у проєкті, то:</p><p>Перейдіть до головного меню у верхньому лівому куті.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/main-menu-button.png" class="kg-image" alt="main-menu-button" width="600" height="400" loading="lazy"><figcaption>Головне меню.</figcaption></figure><p>Перейдіть до <code>File</code> та виберіть <code>All Strings</code>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/all-strings-1.png" class="kg-image" alt="all-strings-1" width="600" height="400" loading="lazy"><figcaption>Побачити всі рядки.</figcaption></figure><p>Ви побачите список усіх рядків у проєкті, їхній стан та переклади.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/all-strings-list.png" class="kg-image" alt="all-strings-list" width="600" height="400" loading="lazy"><figcaption>Всі рядки.</figcaption></figure><!--kg-card-begin: html--><h3 id="як-перекладати-мови-із-письмом-справа-наліво">🔶 Як перекладати мови із письмом справа наліво</h3><!--kg-card-end: html--><p>У той час як деякі мови, серед яких іспанська та італійська, пишуться зліва направо (LTR), інші мови, серед яких арабська та урду, пишуться справа наліво (RTL).</p><p><a href="https://support.crowdin.com/online-editor/#translating-rtl-languages">Crowdin</a> зазначає, що:</p><blockquote>Під час перекладу між мовами LTR і RTL деякі елементи у полі перекладу в редакторі можуть відтворюватись не так само, як після експорту.</blockquote><p>Щоб переконатися, що переклади будуть правильно відтворені в експортованому файлі, Crowdin рекомендує:</p><ol><li>Під час написання перекладу використайте кнопку <code>Copy Source</code>. Це перша кнопка на панелі інструментів.</li></ol><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/toolbar-copy-source-1.png" class="kg-image" alt="toolbar-copy-source-1" width="600" height="400" loading="lazy"><figcaption>Кнопка «Copy Source».</figcaption></figure><p>2. Перекладіть текст на цільову мову.</p><p>3. Не змінюйте змінні або теги, навіть якщо вони виглядають по-іншому. Після експорту файлу вони матимуть правильний вигляд.</p><p>💡 <strong>Важливо<strong>: </strong></strong>Crowdin <a href="https://support.crowdin.com/online-editor/#translating-rtl-languages">пропонує</a> використовувати застосунок <a href="https://store.crowdin.com/unicode">Unicode Table</a> для копіювання та вставки знаків справа наліво та зліва направо, змінюючи напрямок тексту, коли це потрібно.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-77.png" class="kg-image" alt="image-77" width="600" height="400" loading="lazy"><figcaption>Приклад перекладу мови RTL з <a href="https://support.crowdin.com/online-editor/#translating-rtl-languages">документації Crowdin</a>.</figcaption></figure><h3 id="--26"><strong>Налаштування редактора перекладу</strong></h3><p>Ви також можете налаштувати редактор перекладу.</p><p>Щоб перейти до цих налаштувань, натисніть на шестерню у верхньому правому куті редактора перекладу.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/editor-settings.png" class="kg-image" alt="editor-settings" width="600" height="400" loading="lazy"><figcaption>Налаштування редактора перекладу.</figcaption></figure><p>Ви побачите список налаштувань, які можете змінити.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/editor-settings-1.png" class="kg-image" alt="editor-settings-1" width="600" height="400" loading="lazy"><figcaption>Налаштування редактора (частина 1).</figcaption></figure><p>Перша частина цих налаштувань містить:</p><ul><li>мінімальний відсоток відповідності для перекладів з пам’яті перекладів;</li><li>чи потрібно перевіряти переклади на наявність проблем із забезпечення якості (QA);</li><li>чи повинен редактор автоматично завершувати те, що ви пишете, і показувати прогнозовані переклади;</li><li>чи потрібно автоматично затверджувати переклади. Це може бути корисно, якщо ви самостійно перекладаєте і редагуєте проєкт;</li><li>чи потрібно автоматично переходити до наступного рядка;</li><li>тема редактора перекладу (світла, темна або автоматично).</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/editor-settings-2-1.png" class="kg-image" alt="editor-settings-2-1" width="600" height="400" loading="lazy"><figcaption>Налаштування редактора (частина 2).</figcaption></figure><p>Якщо прокрутити вниз, ви знайдете ще більше налаштувань, серед яких:</p><ul><li>чи повинен редактор показувати лише початок вихідного рядка в компактному вигляді;</li><li>чи показувати попередній перегляд перекладу для перекладених рядків;</li><li>як відтворювати HTML-теги: їх можна показувати або приховати;</li><li>чи потрібно відтворювати непридатні для друку символи;</li><li>чи потрібно виділяти поле для перекладу;</li><li>чи потрібно ввімкнути перевірку орфографії в реальному часі;</li><li>мова інтерфейсу користувача вашого редактора перекладу.</li></ul><p>Ви можете налаштувати ці параметри відповідно до своїх потреб.</p><h3 id="--27"><strong>Гарячі клавіші</strong></h3><p>Ще одна ключова функція підвищення продуктивності для перекладачів і редакторів у Crowdin — використання гарячих клавіш.</p><p>Щоб побачити всі гарячі клавіші, доступні для вашої операційної системи, просто натисніть на іконку клавіатури у верхньому правому куті.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/keyboard-shortcuts-button-1.png" class="kg-image" alt="keyboard-shortcuts-button-1" width="600" height="400" loading="lazy"><figcaption>Відкрийте гарячі клавіші.</figcaption></figure><p>Гарячі клавіші, доступні для Windows:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-78.png" class="kg-image" alt="image-78" width="600" height="400" loading="lazy"><figcaption>Гарячі клавіші (Windows). Знімок екрана з <a href="https://support.crowdin.com/online-editor/#helpful-tips">документації Crowdin</a>.</figcaption></figure><p>Гарячі клавіші, доступні для macOS:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/keyboard-shortcuts-macos-1.png" class="kg-image" alt="keyboard-shortcuts-macos-1" width="600" height="400" loading="lazy"><figcaption>Гарячі клавіші (macOS).</figcaption></figure><p>Якщо прокрутити вниз, ви знайдете ще більше гарячих клавіш для macOS.</p><!--kg-card-begin: html--><h3 id="як-скачати-перекладені-файли">🔶 Як скачати перекладені файли</h3><!--kg-card-end: html--><p>Після того, як проєкт перекладено та затверджено, його потрібно скачати.</p><p>Crowdin пропонує три різні варіанти скачування файлів. Ви можете скачати весь проєкт, скачати всі файли проєкту конкретною мовою або скачати один файл конкретною мовою.</p><p>Розглянемо всі варіанти докладніше.</p><h3 id="--28"><strong>Як скачати весь проєкт</strong></h3><p>Якщо вам потрібно скачати весь проєкт:</p><ol><li>Перейдіть до проєкту.</li><li>Перейдіть до вкладки <code>Translations</code>.</li><li>У розділі <code>Download as ZIP</code> натисніть на кнопку <code>Build &amp; Download</code>.</li></ol><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/download-project-1.png" class="kg-image" alt="download-project-1" width="600" height="400" loading="lazy"><figcaption>Розділ «Download as ZIP».</figcaption></figure><p>Ви побачите індикатор виконання, доки Crowdin складає проєкт, а потім розпочнеться скачування.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/progress-bar.png" class="kg-image" alt="progress-bar" width="600" height="400" loading="lazy"><figcaption>Build &amp; Download.</figcaption></figure><p>ZIP-файл буде містити папки для кожної мови. Назви папок будуть відповідати їхнім мовним кодам.</p><h3 id="--29"><strong>Як скачати всі файли цільовою мовою</strong></h3><p>Цей варіант корисний, якщо вам потрібно скачати всі перекладені файли конкретною цільовою мовою.</p><ol><li>Перейдіть до проєкту.</li><li>Перейдіть до вкладки <code>Translations</code>.</li><li>У розділі <code>Download as ZIP</code> виберіть мову.</li><li>Натисніть на кнопку <code>Build &amp; Download</code>.</li></ol><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/download-language-1.png" class="kg-image" alt="download-language-1" width="600" height="400" loading="lazy"><figcaption>Розділ «Download as ZIP».</figcaption></figure><h3 id="--30"><strong>Як скачати один файл цільовою мовою</strong></h3><p>Третій варіант — скачати лише один файл цільовою мовою.</p><p>Для цього:</p><ol><li>Перейдіть до проєкту.</li><li>Перейдіть до вкладки <code>Dashboard</code>.</li><li>Виберіть цільову мову.</li><li>Натисніть на файл.</li><li>Натисніть на три крапки праворуч, щоб побачити додаткові опції (див. знімок екрана нижче).</li><li>Натисніть на <code>Download</code>.</li></ol><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/download-one-file.png" class="kg-image" alt="download-one-file" width="600" height="400" loading="lazy"><figcaption>Скачування файлу цільовою мовою.</figcaption></figure><p>Скачування має розпочатися, і перекладений файл повинен бути готовий через кілька секунд або хвилин.</p><p>Ви також можете автоматизувати процес експорту чи скачування перекладених файлів за допомогою інтеграцій Crowdin.</p><!--kg-card-begin: html--><h3 id="як-використовувати-память-перекладів">🔶 Як використовувати пам’ять перекладів (TM)</h3><!--kg-card-end: html--><p>Чудова робота! Ви вже знаєте основні функції редактора перекладу, тому поговоримо про більш просунуті функції, серед яких пам’ять перекладів.</p><p>Ми розглянемо, як ви можете:</p><ul><li>створити пам’ять перекладів;</li><li>керувати пам’яттю перекладів;</li><li>завантажити пам’ять перекладів;</li><li>призначити пам’ять перекладів до проєкту.</li></ul><p>💡 <strong>Важливо<strong>:</strong></strong> пам’ятайте, що TM — це як база даних перекладених рядків та їхні відповідні переклади. Використання попередніх перекладів може значно заощадити час.</p><p>Готові? Тоді розпочнемо.</p><h3 id="-tm--2"><strong>Як створити пам’ять перекладів (TM)</strong></h3><p>Щоб створити TM для проєкту:</p><ol><li>Перейдіть до свого профілю. Для цього натисніть на <code>Profile</code> у спадному меню, яке з’явиться, якщо натиснути на зображення свого профілю у верхньому правому куті.</li><li>Перейдіть до вкладки <code>Resources</code>.</li></ol><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/resources-1.png" class="kg-image" alt="resources-1" width="600" height="400" loading="lazy"><figcaption>Вкладка «Resources».</figcaption></figure><p>3. Якщо у вас уже створено проєкт, ви побачите TM для цього проєкту. Ви також можете створити нову TM, незалежну від проєкту (ви можете призначити її до проєкту пізніше).</p><p><a href="https://support.crowdin.com/translation-memory/#creating-tm">Crowdin</a> зазначає, що:</p><blockquote>Окрім проєктних TM, які автоматично створюються разом із відповідними проєктами, ви також можете створити окремі TM, заповнити їх відповідним вмістом, завантаживши наявні TM у форматі TMX, XLSX або CSV, а потім призначити ці TM до потрібних проєктів.</blockquote><p>4. Щоб створити нову пам’ять перекладів, натисніть на зелену кнопку <code>Create TM</code>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/create-TM-1.png" class="kg-image" alt="create-TM-1" width="600" height="400" loading="lazy"><figcaption>Кнопка «Create TM».</figcaption></figure><p>5. Заповніть інформацію для нової пам’яті перекладів (наприклад, її назву, мову та чи хочете ви призначити її до наявного проєкту).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/create-translation-memory.png" class="kg-image" alt="create-translation-memory" width="600" height="400" loading="lazy"><figcaption>Створення пам’яті перекладів.</figcaption></figure><p>Я створю нову TM під назвою <code>Demo TM</code> англійською мовою. Поки що я не призначатиму її до жодного проєкту.</p><p>Глянемо, що відбувається:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/demo-translation-memory.png" class="kg-image" alt="demo-translation-memory" width="600" height="400" loading="lazy"><figcaption>Нова пам’ять перекладів.</figcaption></figure><p>🎉 Чудово! Тепер ми бачимо нову TM у списку.</p><h3 id="-tm--3"><strong>Як керувати пам’яттю перекладів (TM)</strong></h3><p>Якщо натиснути на три крапки праворуч від TM, щоб переглянути додаткові опції, ви побачите наступне:</p><ul><li>Upload (завантажити);</li><li>Download (скачати);</li><li>Edit (редагувати);</li><li>View Records (переглянути записи);</li><li>Delete (видалити).</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/additional-options-1.png" class="kg-image" alt="additional-options-1" width="600" height="400" loading="lazy"><figcaption>Додаткові опції TM.</figcaption></figure><p>Якщо вибрати TM, поставивши галочку, ви зможете її видалити, відредагувати або переглянути записи.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/manage-tm-2.png" class="kg-image" alt="manage-tm-2" width="600" height="400" loading="lazy"></figure><p>Оскільки наша пам’ять перекладів є новою (а отже, порожньою), переглянемо записи TM для freeCodeCamp Course Project.</p><p>Якщо натиснути на неї, ви побачите список усіх записів, збережених у TM:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translation-memory-strings-1.png" class="kg-image" alt="translation-memory-strings-1" width="600" height="400" loading="lazy"><figcaption>Пам’ять перекладів (TM).</figcaption></figure><p>Тут ви можете:</p><ul><li>редагувати записи;</li><li>видаляти записи;</li><li>шукати певні записи, враховуючи регістр, цілу фразу та точний збіг;</li><li>приховувати або показувати певні стовпці.</li></ul><h3 id="-tm--4"><strong>Як завантажити та скачати пам’ять перекладів (TM)</strong></h3><p>У вкладці <code>Resources</code> ви також можете завантажувати та скачувати TM.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/tm-records-download-upload.png" class="kg-image" alt="tm-records-download-upload" width="600" height="400" loading="lazy"><figcaption>Панель інструментів вкладки «Resources».</figcaption></figure><p>Файл повинен бути в одному з наступних форматів:</p><ul><li>TMX</li><li>XLSX</li><li>CSV</li></ul><p>Щоб завантажити TM:</p><ul><li>натисніть на кнопку <code>Upload</code>;</li><li>виберіть файл у файловій системі;</li><li>зіставте стовпці до відповідної мови.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/tm-records-download-upload.png" class="kg-image" alt="tm-records-download-upload" width="600" height="400" loading="lazy"><figcaption>Кнопка «Upload».</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-79.png" class="kg-image" alt="image-79" width="600" height="400" loading="lazy"><figcaption>Відповідність стовпців та мов. Зображення з <a href="https://support.crowdin.com/translation-memory/#downloading-and-uploading-tm">документації Crowdin</a>.</figcaption></figure><p>Щоб скачати пам’ять перекладів:</p><ul><li>натисніть на кнопку <code>Download</code>;</li><li>виберіть формат (TMX, XLSX або CSV);</li><li>виберіть, чи ви хочете завантажити всі мови або лише конкретну пару.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/tm-records-download-upload.png" class="kg-image" alt="tm-records-download-upload" width="600" height="400" loading="lazy"><figcaption>Кнопка «Download».</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/download-tm.png" class="kg-image" alt="download-tm" width="600" height="400" loading="lazy"><figcaption>Скачування TM.</figcaption></figure><p>Скачування має розпочатися після натискання зеленої кнопки <code>Download</code>.</p><p>Ось файл CSV, який ми отримаємо після експорту пам’яті перекладів для freeCodeCamp Course Project:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/Screenshot-2023-09-19-at-5.19.49-PM.png" class="kg-image" alt="Screenshot-2023-09-19-at-5.19.49-PM" width="600" height="400" loading="lazy"><figcaption>Експортований файл CSV.</figcaption></figure><h3 id="--31"><strong>Як призначити пам’ять перекладів до проєкту</strong></h3><p>Щоб призначити наявну TM до проєкту:</p><ol><li>Перейдіть до проєкту.</li><li>Перейдіть до вкладки <code>Settings</code>.</li><li>Перейдіть до <code>Translation Memories</code>.</li></ol><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/assign-tm.png" class="kg-image" alt="assign-tm" width="600" height="400" loading="lazy"><figcaption>Вкладка «Settings».</figcaption></figure><p>4. Прокрутіть вниз, щоб знайти <code>Assigned Translation Memories</code>.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/assigned-tm.png" class="kg-image" alt="assigned-tm" width="600" height="400" loading="lazy"></figure><p>5. Виберіть TM, які хочете призначити до свого проєкту.</p><p><a href="https://support.crowdin.com/translation-memory/#prioritizing-tm">Crowdin</a> зазначає, що:</p><blockquote>Якщо ви призначаєте декілька TM до проєкту, ви можете встановити потрібний пріоритет для кожної пам’яті. У результаті пропозиції TM з вищим пріоритетом будуть відображатися в першу чергу.</blockquote><p>💡 <strong>Важливо<strong>:</strong></strong> більше число означає вищий пріоритет. Якщо TM має пріоритет 5, це буде вище, ніж пріоритет 1.</p><p>Ви також можете змінити стандартну TM, натиснувши на відповідну іконку зірочки.</p><p><strong>Примітка<strong>: </strong></strong>зверніть увагу, що Crowdin нещодавно прибрав необхідність використовувати власні робочі процеси для автоматичного застосування збігів пам’яті перекладів. Тепер ви можете ввімкнути пам’ять перекладів у налаштуваннях проєкту, як показано нижче:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/01/image-13.png" class="kg-image" alt="image-13" width="600" height="400" loading="lazy"><figcaption>Як увімкнути попередній переклад пам’яті перекладів для нового матеріалу в налаштуваннях проєкту. Знімок екрана надано командою Crowdin.</figcaption></figure><!--kg-card-begin: html--><h3 id="глосарій">🔶 Глосарій</h3><!--kg-card-end: html--><p>Чудово! Тепер ви знаєте найважливіші аспекти TM на Crowdin, тож розглянемо глосарії.</p><p>💡 <strong>Важливо<strong>: </strong></strong>пам’ятайте, що глосарій дозволяє зберігати та керувати термінологією проєкту, допомагаючи перекладачам з контекстом та визначеннями.</p><h3 id="--32"><strong>Як створити глосарій</strong></h3><p>Глосарій автоматично створюється під час створення проєкту, але ви також можете створити нові глосарії, які будуть незалежні від будь-якого проєкту.</p><p>Щоб створити глосарій:</p><ul><li>перейдіть до свого профілю;</li><li>перейдіть до <code>Resources</code>;</li><li>натисніть на <code>Glossaries</code>.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/glossaries-tab.png" class="kg-image" alt="glossaries-tab" width="600" height="400" loading="lazy"><figcaption>Кнопка «Glossaries»</figcaption></figure><p>Ви побачите глосарій для кожного проєкту, який ви створили на Crowdin.</p><ul><li>натисніть на зелену кнопку <code>Create Glossary</code>;</li><li>введіть назву глосарію та виберіть мову;</li><li>якщо потрібно, призначте глосарій до проєкту.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/create-a-glossary.png" class="kg-image" alt="create-a-glossary" width="600" height="400" loading="lazy"><figcaption>Призначення глосарію.</figcaption></figure><p>Після цього ви побачите новий глосарій у списку глосаріїв. Я створила новий глосарій під назвою «Demo Glossary».</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/demo-glossary.png" class="kg-image" alt="demo-glossary" width="600" height="400" loading="lazy"><figcaption>Список глосаріїв.</figcaption></figure><h3 id="--33"><strong>Як керувати термінами глосарію</strong></h3><p>Ви можете додавати, редагувати та видаляти поняття і терміни зі своїх глосаріїв. Розглянемо, як це можна зробити.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/empty-glossary.png" class="kg-image" alt="empty-glossary" width="600" height="400" loading="lazy"><figcaption>Новий порожній глосарій.</figcaption></figure><p><strong><strong>💡 </strong>Важливо<strong>:</strong></strong> на Crowdin поняття відрізняються від термінів. Поняття є ширшим за термін. Ось що каже <a href="https://support.crowdin.com/glossary/#managing-glossary-concepts-and-terms">документація</a> про різницю між ними:</p><blockquote>Поняття включає терміни глосарію та їхні варіації з кількома перекладами та іншою релевантною інформацією.</blockquote><p>Щоб додати поняття, натисніть на зелену кнопку <code>Add concept</code>:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/add-concept-2.png" class="kg-image" alt="add-concept-2" width="600" height="400" loading="lazy"><figcaption>Кнопка «Add concept».</figcaption></figure><p>Вам потрібно буде написати інформацію про нове поняття:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/Screenshot-2023-09-19-at-6.08.32-PM.png" class="kg-image" alt="Screenshot-2023-09-19-at-6.08.32-PM" width="600" height="400" loading="lazy"><figcaption>Додайте інформацію про поняття.</figcaption></figure><p><a href="https://support.crowdin.com/glossary/#managing-glossary-concepts-and-terms">Документація Crowdin</a> описує наступні деталі <strong>поняття</strong>:</p><blockquote><strong><strong>Definition:</strong></strong> визначення поняття.<br><strong><strong>Subject:</strong></strong> галузь знань, до якої відноситься поняття.<br><strong><strong>Note:</strong></strong> короткі примітки про поняття, які можуть бути корисними перекладачам.<br><strong><strong>URL:</strong></strong> посилання на вебсторінки з релевантною інформацією про поняття.<br><strong><strong>Figure:</strong> </strong>посилання на відповідне зображення.</blockquote><p>У &nbsp;документації також зазначено деталі <strong>терміну</strong>:</p><blockquote><strong><strong>Part of speech: </strong></strong>частина мови (наприклад, іменник, дієслово, прикметник тощо).<br><strong><strong>Type: </strong></strong>тип (наприклад, повна форма, акронім, абревіатура тощо).<br><strong><strong>Status:</strong></strong> статус (рекомендований, допущений, не рекомендований, застарілий).<br><strong><strong>Gender:</strong></strong> рід терміну.<br><strong><strong>Description:</strong></strong> опис терміну.<br><strong><strong>Note: </strong></strong>короткі примітки про термін, які можуть бути корисними перекладачам.<br><strong><strong>URL:</strong> </strong>посилання на вебсторінки з релевантною інформацією про термін.</blockquote><p>Після створення терміну ви побачите його у списку термінів глосарію:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/glossary-term-demo.png" class="kg-image" alt="glossary-term-demo" width="600" height="400" loading="lazy"></figure><p>Щоб відредагувати або видалити термін, натисніть на три крапки праворуч, щоб переглянути додаткові опції та виберіть потрібне.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/glosssary-term-1.png" class="kg-image" alt="glosssary-term-1" width="600" height="400" loading="lazy"><figcaption>Термін глосарію.</figcaption></figure><p>Ви можете скачати або завантажити глосарій у наступних форматах:</p><ul><li>TBX (v2)</li><li>TBX (v3)</li><li>CSV</li><li>XLSX</li></ul><p>Просто натисніть на відповідну кнопку, і ви зможете вибрати файл для завантаження або формат файлу для скачування.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/download-upload.png" class="kg-image" alt="download-upload" width="600" height="400" loading="lazy"><figcaption>Завантаження та скачування глосарію.</figcaption></figure><p><a href="https://support.crowdin.com/glossary/#downloading-and-uploading-glossary">Crowdin</a> рекомендує:</p><blockquote>Якщо ви завантажуєте глосарій у форматі файлу CSV або XLS/XLSX, виберіть мову для кожного стовпця та значення стовпця (термін, опис або частина мови) у діалоговому вікні конфігурації.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-80.png" class="kg-image" alt="image-80" width="600" height="400" loading="lazy"><figcaption>Вибір стовпців. Зображення з <a href="https://support.crowdin.com/glossary/#downloading-and-uploading-glossary">документації Crowdin</a>.</figcaption></figure><h3 id="--34"><strong>Як призначити глосарій до проєкту</strong></h3><p>Призначити глосарій до проєкту на Crowdin дуже просто:</p><ul><li>перейдіть до свого проєкту;</li><li>перейдіть до вкладки <code>Settings</code>;</li><li>перейдіть до <code>Glossaries</code>;</li><li>виберіть глосарій (або глосарії), які хочете призначити до проєкту.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/glossaries-demo.png" class="kg-image" alt="glossaries-demo" width="600" height="400" loading="lazy"><figcaption>Глосарії проєкту.</figcaption></figure><p><strong><strong>💡 </strong>Важливо<strong>:</strong></strong> щоб змінити стандартний глосарій проєкту, просто натисніть на іконку зірочки відповідного глосарію. Темно-сіра зірочка позначає поточний стандартний глосарій.</p><p>Ви також можете ділитися глосаріями між усіма проєктами, встановивши опцію <code>Share Glossaries</code> у своєму профілі:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/share-glossaries.png" class="kg-image" alt="share-glossaries" width="600" height="400" loading="lazy"><figcaption>Опція «Share Glossaries».</figcaption></figure><h3 id="--35"><strong>Як перекласти глосарій</strong></h3><p>Переклад глосарію може бути дуже корисним для послідовного використання термінів цільовими мовами.</p><p>Щоб перекласти глосарій, Crowdin рекомендує використовувати безоплатний застосунок <a href="https://crowdin.com/store/apps/glossary-translate-app">Translate Glossary</a>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translate-glossary.png" class="kg-image" alt="translate-glossary" width="600" height="400" loading="lazy"><figcaption>Застосунок «Translate Glossary».</figcaption></figure><p>Якщо ви встановите цей застосунок, ви зможете перекладати глосарій безпосередньо на Crowdin і вибирати, які проєкти повинні мати доступ до цього застосунку.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/install-translate-glossary.png" class="kg-image" alt="install-translate-glossary" width="600" height="400" loading="lazy"><figcaption>Встановлення застосунку.</figcaption></figure><!--kg-card-begin: html--><h3 id="забезпечення-якості-на-crowdin">🔶 Забезпечення якості (QA) на Crowdin</h3><!--kg-card-end: html--><p>Забезпечення якості є важливим для будь-якого типу проєктів, і це особливо актуально для проєктів з локалізації. Одна маленька помилка може значно вплинути на ваших користувачів.</p><p>Саме тому Crowdin впровадив ефективну перевірку якості, щоб допомогти надавати високоякісні переклади, яких заслуговують ваші користувачі.</p><p><a href="https://support.crowdin.com/qa-checks/">Crowdin</a> зазначає:</p><blockquote>Перевірки QA допомагають легко і швидко виявити деякі поширені помилки. Ми рекомендуємо переглянути та вирішити всі проблеми перевірок QA перед побудовою проєкту й скачуванням перекладів.</blockquote><p>Перевірки QA дозволяють виявити:</p><ul><li>орфографічні помилки;</li><li>відсутні коми;</li><li>зайві пробіли;</li><li>інші поширені помилки.</li></ul><h3 id="-qa-"><strong>Як налаштувати забезпечення якості (QA)</strong></h3><p>Щоб налаштувати перевірки QA та вибрати, що ви хочете перевіряти в перекладених рядках:</p><ul><li>перейдіть до свого проєкту;</li><li>перейдіть до вкладки <code>Settings</code>;</li><li>переконайтеся, що вибрано <code>Enable QA Checks</code>;</li><li>виберіть, що ви хочете перевіряти.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/qa-checks-settings.png" class="kg-image" alt="qa-checks-settings" width="600" height="400" loading="lazy"><figcaption>Категорія «QA Checks».</figcaption></figure><p>Ви можете перевіряти:</p><ul><li>чи переклад порожній;</li><li>чи переклад довший за дозволену довжину (якщо така існує);</li><li>невідповідність тегів;</li><li>невідповідність пробілів;</li><li>невідповідність змінних;</li><li>невідповідність пунктуації;</li><li>невідповідність регістру знаків;</li><li>невідповідність спеціальних символів;</li><li>проблеми «Incorrect translation»;</li><li>орфографічні помилки;</li><li>помилки синтаксису ICU;</li><li>відповідність термінам з глосарію;</li><li>дубльовані переклади;</li><li>помилки синтаксису FTL;</li><li>помилки синтаксису Android.</li></ul><p><strong><strong>💡 </strong>Важливо<strong>: </strong></strong>для кожної з цих перевірок QA ви можете вибрати: показувати користувачеві попередження чи вказувати на помилку.</p><p>Щоб зберегти зміни, натисніть на зелену кнопку <code>Save</code>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/qa-save-button.png" class="kg-image" alt="qa-save-button" width="600" height="400" loading="lazy"><figcaption>Збереження перевірок QA.</figcaption></figure><h3 id="-qa-1"><strong>Як перевірити стан QA</strong></h3><p>Редактори та менеджери проєктів можуть бачити проблеми, знайдені перевірками якості.</p><p>Щоб побачити поточний стан:</p><ul><li>перейдіть до свого проєкту;</li><li>перейдіть до вкладки <code>Dashboard</code>;</li><li>знайдіть стан <code>QA Checks</code>.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/qa-checks-status-1.png" class="kg-image" alt="qa-checks-status-1" width="600" height="400" loading="lazy"><figcaption>Перевірка QA без проблем.</figcaption></figure><p>Ви побачите один з наступних станів:</p><ul><li><strong><strong>Off</strong></strong>: перевірки QA вимкнені;</li><li><strong><strong>In Progress</strong></strong>: перевірки QA в процесі;</li><li><strong><strong>No Issues</strong></strong>: перевірки QA не знайшли жодних проблем;</li><li><strong><strong>Issues Foun</strong>d</strong>: перевірки QA виявили проблеми.</li></ul><p>Якщо ви спробуєте зберегти рядок з проблемою перевірки QA, ви побачите попередження або помилку. Ви все одно можете зберегти його, але ці проблеми краще одразу виправити.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/qa-warning.png" class="kg-image" alt="qa-warning" width="600" height="400" loading="lazy"><figcaption>Попередження про зайві пробіли.</figcaption></figure><p>💡<strong><strong> </strong>Важливо<strong>: </strong></strong>проблема буде автоматично виправлена, якщо ви натиснете на кнопку <code>Autofix</code>. Ви також можете зберегти цей переклад без виправлення або скасувати його.</p><p>Це зображення з документації Crowdin показує, що ви побачите, якщо у вашому проєкті будуть знайдені проблеми:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-81.png" class="kg-image" alt="image-81" width="600" height="400" loading="lazy"><figcaption>Знайдено проблеми. Зображення з <a href="https://support.crowdin.com/qa-checks/">документації Crowdin</a>.</figcaption></figure><p>Забезпечення якості — це дуже важливий крок, до якого потрібно серйозно віднестись під час процесу локалізації.</p><!--kg-card-begin: html--><h3 id="як-завантажити-наявні-переклади">🔶 Як завантажити наявні переклади</h3><!--kg-card-end: html--><p>Якщо у вас є наявні переклади, ви також можете завантажити їх до свого проєкту.</p><p>Є три варіанти:</p><ul><li>завантажити їх через вкладку Translations;</li><li>завантажити їх через сторінку мови;</li><li>завантажити їх через редактор перекладу.</li></ul><h3 id="-translations"><strong>Як завантажити переклади через вкладку Translations</strong></h3><p>Щоб завантажити їх через вкладку Translations:</p><ul><li>перейдіть до свого проєкту;</li><li>перейдіть до <code>Upload existing translations</code>;</li><li>перетягніть наявні переклади або виберіть файли зі своєї файлової системи.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translations-tab-upload.png" class="kg-image" alt="translations-tab-upload" width="600" height="400" loading="lazy"><figcaption>Завантаження перекладів через вкладку «Translations».</figcaption></figure><p>Згідно з Crowdin, до <a href="https://support.crowdin.com/uploading-translations/#key-value-formats">підтримуваних форматів</a> для завантаження перекладів належать ті, що мають структуру ключ-значення, серед яких:</p><blockquote>Android XML, macOS/iOS Strings, Stringsdict, JSON, Chrome JSON, GO JSON, i18next JSON, FBT JSON, XLIFF, XLIFF 2.0, Java Properties, Play Properties, Java Properties XML, RESX, RESW, RES JSON, YAML, INI, Joomla INI, JS, FJS, PO, TS, QT TS, Blackberry, Symbian, Flex, BADA, TOML, Coffee, DKLANG, XAML, SRT, VTT, VTT2, SBV, SVG, DTD, CSV, RC, WXL, Maxthon, Haml, XLSX, PLIST, PHP, ARB, VDF.</blockquote><p>Crowdin також <a href="https://support.crowdin.com/uploading-translations/#text-and-html-based-formats">зазначає</a>:</p><blockquote>Для файлів, які не мають визначеної структури, завантаження перекладу обробляється експериментальною технологією машинного навчання.</blockquote><h3 id="--36"><strong>Як завантажити переклади через сторінку мови</strong></h3><p>Щоб завантажити їх через сторінку мови:</p><ul><li>перейдіть до свого проєкту;</li><li>перейдіть до <code>Dashboard</code>;</li><li>виберіть цільову мову;</li><li>виберіть файл, але натискайте не на нього, а на три крапки праворуч, щоб переглянути додаткові опції;</li><li>натисніть на <code>Upload Translations</code>.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/upload-translations-language-page-2-1.png" class="kg-image" alt="upload-translations-language-page-2-1" width="600" height="400" loading="lazy"><figcaption>Завантаження перекладів через сторінку мови.</figcaption></figure><p>Коли ви натиснете на цю опцію, ви побачите деякі налаштування для завантаження та призначення перекладів. Виберіть опції, які потрібні для вашого проєкту.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/upload-options.png" class="kg-image" alt="upload-options" width="600" height="400" loading="lazy"></figure><h3 id="--37"><strong>Як завантажити переклади через редактор перекладу</strong></h3><p>Ви також можете завантажити переклади безпосередньо з редактора перекладу.</p><p>Для цього:</p><ul><li>натисніть на головне меню;</li><li>у <code>File</code> виберіть <code>Upload Translations...</code>.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/upload-from-editor.png" class="kg-image" alt="upload-from-editor" width="600" height="400" loading="lazy"><figcaption>Завантаження перекладів через редактор перекладу.</figcaption></figure><h3 id="-crowdin-4"><strong>Підтримувані формати файлів на Crowdin</strong></h3><p>Раніше згадувалось про різні формати файлів, з якими можна працювати на Crowdin. Але Crowdin підтримує більше ніж 100 форматів файлів.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/100-file-formats.png" class="kg-image" alt="100-file-formats" width="600" height="400" loading="lazy"><figcaption>Crowdin підтримує 100+ форматів.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/supported-file-formats.png" class="kg-image" alt="supported-file-formats" width="600" height="400" loading="lazy"><figcaption>Підтримувані формати файлів у Crowdin Store.</figcaption></figure><p>Ви можете перевірити підтримувані формати файлів тут:</p><ul><li><a href="https://support.crowdin.com/supported-formats/">підтримувані формати;</a></li><li><a href="https://store.crowdin.com/categories/file-formats">формати файлів у Crowdin Store</a>.</li></ul><!--kg-card-begin: html--><h3 id="як-попередньо-перекласти-проєкт">🔶 Як попередньо перекласти проєкт</h3><!--kg-card-end: html--><p>Якщо ваша мета — заощадити час та підвищити продуктивність, попередній переклад за допомогою машинного перекладу (MT) може бути саме тим, що вам потрібно.</p><p>Це автоматизований процес, який застосовує комп’ютерні переклади до вашого проєкту при завантаженні файлу. На Crowdin ви можете налаштувати двигуни машинного перекладу для використання цієї функції.</p><p>У вас є два варіанти для впровадження цього процесу:</p><ul><li>вручну;</li><li>автоматично.</li></ul><h3 id="--38"><strong>Попередній переклад вручну</strong></h3><p>Щоб попередньо перекласти свій матеріал за допомогою машинного перекладу (MT):</p><ul><li>перейдіть до свого проєкту;</li><li>перейдіть до вкладки <code>Dashboard</code>;</li><li>натисніть на <code>Pre-translation</code>;</li><li>виберіть <code>via TM</code> (пам’ять перекладів) або <code>via MT</code> (машинний переклад).</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/pretranslation-1.png" class="kg-image" alt="pretranslation-1" width="600" height="400" loading="lazy"><figcaption>Попередній переклад.</figcaption></figure><p>Якщо ви вибрали <code>via MT</code> (машинний переклад), вам потрібно буде вибрати двигун перекладу, цільові мови та файли, які ви хочете попередньо перекласти. Ви також можете додати мітки.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translation-engine.png" class="kg-image" alt="translation-engine" width="600" height="400" loading="lazy"><figcaption>Попередній переклад проєкту через MT.</figcaption></figure><h3 id="--39"><strong>Автоматичний попередній переклад</strong></h3><p>Якщо ви вибрали автоматичний процес, система буде автоматично попередньо перекладати новий матеріал.</p><p>Нещодавно Crowdin дозволив увімкнути автоматичний попередній переклад нового матеріалу в налаштуваннях проєкту. Якщо увімкнути цю функцію і завантажити новий матеріал до свого проєкту, система буде перекладати його автоматично.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/01/image--1-.png" class="kg-image" alt="image--1-" width="600" height="400" loading="lazy"><figcaption>Автоматичний попередній переклад нового матеріалу. Знімок екрана надано командою Crowdin.</figcaption></figure><!--kg-card-begin: html--><h3 id="переклад-офлайн">🔶 Переклад офлайн</h3><!--kg-card-end: html--><p>Іноді потрібно працювати офлайн. Crowdin має чудову функцію для ситуацій, коли команда хочете працювати над перекладами без підключення до інтернету.</p><p>Щоб увімкнути або вимкнути цю функцію:</p><ul><li>перейдіть до свого проєкту;</li><li>перейдіть до вкладки <code>Settings</code>;</li><li>перейдіть до <code>Privacy and Collaboration</code>;</li><li>поставте або зніміть галочку біля <code>Allow offline translation</code>.</li></ul><p><strong><strong>💡</strong>Важливо<strong>:</strong></strong> цю функцію можуть увімкнути або вимкнути менеджери проєкту.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/settings-tab-offline-1.png" class="kg-image" alt="settings-tab-offline-1" width="600" height="400" loading="lazy"><figcaption>Дозвіл на переклад офлайн.</figcaption></figure><p>Файли можна скачати через редактор або сторінку мови.</p><h3 id="--40"><strong>Як скачати файл через редактор</strong></h3><p>Щоб скачати файл через редактор перекладу:</p><ul><li>натисніть на головне меню у верхньому лівому куті;</li><li>перейдіть до <code>File</code>;</li><li>натисніть на <code>Download</code> або <code>Export in XLIFF</code>.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/download-files.png" class="kg-image" alt="download-files" width="600" height="400" loading="lazy"><figcaption>Скачування файлу через редактор.</figcaption></figure><h3 id="--41"><strong>Як скачати файл через сторінку мови</strong></h3><p>Щоб скачати файл через сторінку мови:</p><ul><li>перейдіть до свого проєкту;</li><li>перейдіть до <code>Dashboard</code>;</li><li>виберіть мову;</li><li>у списку файлів натисніть на три крапки поруч з файлом, який хочете скачати, щоб переглянути додаткові опції;</li><li>натисніть на <code>Download</code> або <code>Export in XLIFF</code>.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/language-download-1.png" class="kg-image" alt="language-download-1" width="600" height="400" loading="lazy"><figcaption>Скачування файлу через сторінку мови.</figcaption></figure><h3 id="--42"><strong>Як скачати всі файли цільової мови</strong></h3><p>Якщо вам потрібно скачати всі файли цільовою мовою:</p><ul><li>перейдіть до свого проєкту;</li><li>перейдіть до <code>Dashboard</code>;</li><li>виберіть мову;</li><li>натисніть на іконку стрілок вгору і вниз (див. знімок екрана нижче);</li><li>натисніть на <code>Download translations</code> або <code>Export in XLIFF</code>.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/download-files-from-language-1.png" class="kg-image" alt="download-files-from-language-1" width="600" height="400" loading="lazy"><figcaption>Скачування всіх перекладів.</figcaption></figure><!--kg-card-begin: html--><h3 id="громадські-проєкти">🔶 Громадські проєкти</h3><!--kg-card-end: html--><p>Тепер ви знаєте деякі з найважливіших функцій Crowdin, тому можете задатись питанням, як досліджувати інші проєкти, які наразі перекладаються на Crowdin.</p><p>Якщо ви натиснете на <code>Projects</code> вгорі, а потім виберете <code>Explore Public Projects</code>, то побачите сторінку, де можна переглянути публічні проєкти за темами та знайти популярні проєкти на Crowdin.</p><p>Ви також можете фільтрувати проєкти за допомогою пошуку в рядку пошуку.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/explore-crowdin.png" class="kg-image" alt="explore-crowdin" width="600" height="400" loading="lazy"><figcaption>Сторінка «Explore Crowdin».</figcaption></figure><p>🎉 Вітаю! Ви щойно досягли кінця другої частини підручника, яка була зосереджена на основах Crowdin.</p><p>Тепер ми зануримося в те, як команди та організації можуть використовувати Crowdin для ефективного управління своїми проєктами.</p><!--kg-card-begin: html--><h2 id="crowdin-для-команд-та-організацій">🔹 Crowdin для команд та організацій</h2><!--kg-card-end: html--><p>Чудово! Тепер розглянемо, як Crowdin може допомогти, якщо ви працюєте з командою або якщо ви засновник чи менеджер організації, яка зацікавлена в локалізації продукту або платформи.</p><p>Ми розглянемо, як ви можете запрошувати членів команди, призначати посади та завдання й створювати звіти.</p><!--kg-card-begin: html--><h3 id="як-запросити-членів-команди">🔶 Як запросити членів команди</h3><!--kg-card-end: html--><p>Щоб надіслати запрошення до свого проєкту:</p><ul><li>перейдіть до свого проєкту;</li><li>перейдіть до вкладки <code>Members</code>;</li><li>натисніть на зелену кнопку <code>Invite</code>.</li></ul><p>💡 <strong>Важливо: </strong>для того ж результату також можна натиснути на сіру кнопку <code>Invite People</code> у верхньому лівому куті.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/members-tab-2-2.png" class="kg-image" alt="members-tab-2-2" width="600" height="400" loading="lazy"><figcaption>Вкладка «Members».</figcaption></figure><p>Перш ніж надіслати запрошення, вам потрібно ввести наступну інформацію:</p><ul><li>посаду;</li><li>електронну пошту або ім’я користувача Crowdin;</li><li>повідомлення.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/invite-members.png" class="kg-image" alt="invite-members" width="600" height="400" loading="lazy"><figcaption>Поділіться запрошенням.</figcaption></figure><p>Якщо ви натиснете на <code>Select role</code>, ви побачите це:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/select-role.png" class="kg-image" alt="select-role" width="600" height="400" loading="lazy"><figcaption>Виберіть посаду.</figcaption></figure><p>За замовчуванням вибрано посаду <code>Translator</code>.</p><p>Ви також побачите три поля, де можна вибрати, для яких мов ви хочете призначити посаду. Наприклад, ця людина може бути перекладачем для японської та перекладачем і редактором для іспанської.</p><p><strong><strong>💡 </strong>Важливо<strong>:</strong></strong> якщо ви залишите це поле порожнім, посада буде застосована до всіх мов, але ви також можете вибрати конкретні мови.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/select-role-copy.png" class="kg-image" alt="select-role-copy" width="600" height="400" loading="lazy"><figcaption>Виберіть конкретні мови.</figcaption></figure><p>Ми розглянемо посади трішки пізніше.</p><p>💡 <strong>Важливо<strong>:</strong></strong> посаду також можна змінити в розділі <code>Profile</code>.</p><p>Як тільки будете готові, натисніть на <code>Save</code>, і ви повернетесь до основних опцій. Натисніть на <code>Done</code>, щоб надіслати запрошення.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/invite-members.png" class="kg-image" alt="invite-members" width="600" height="400" loading="lazy"><figcaption>Надішліть запрошення.</figcaption></figure><h3 id="--43"><strong>Як надіслати посилання на запрошення</strong></h3><p>Ще один спосіб надіслати запрошення — за посиланням.</p><p>Просто натисніть на кнопку <code>Get Link</code> внизу, щоб скопіювати посилання та надіслати його людині, яку хочете запросити до свого проєкту.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/invite-members-link.png" class="kg-image" alt="invite-members-link" width="600" height="400" loading="lazy"><figcaption>Отримайте посилання на запрошення.</figcaption></figure><p>Зверху ви побачите повідомлення про підтвердження.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/link-copied-to-clipboard.png" class="kg-image" alt="link-copied-to-clipboard" width="600" height="400" loading="lazy"><figcaption>Повідомлення про підтвердження.</figcaption></figure><p>Це посилання можна вставити куди завгодно. Наприклад, в електронний лист.</p><h3 id="--44"><strong>Як керувати посиланнями на запрошення</strong></h3><p>Щоб керувати посиланнями на запрошення, натисніть на опцію <code>Manage Links</code>:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/manage-links.png" class="kg-image" alt="manage-links" width="600" height="400" loading="lazy"><figcaption>Кнопка «Manage Links».</figcaption></figure><p>Ви побачите список усіх згенерованих посилань на запрошення, коли вони були згенеровані та які посади були надані запрошеній особі.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/invitation-links.png" class="kg-image" alt="invitation-links" width="600" height="400" loading="lazy"><figcaption>Згенеровані посилання на запрошення.</figcaption></figure><p><strong><strong>💡 </strong>Важливо<strong>: </strong></strong>ви можете знову скопіювати їх, натиснувши на іконку посилання праворуч, або зробити їх неактивними, натиснувши на <code>Revoke link</code>.</p><p>Якщо ви натиснете на <code>Done</code>, то повернетеся до попереднього екрану, і зможете натиснути на <code>X</code> у верхньому куті, щоб закрити його.</p><!--kg-card-begin: html--><h3 id="посади">🔶 Посади</h3><!--kg-card-end: html--><p>Тепер поговоримо про різні посади, які можна призначити членам команди. Прочитаємо описи посад, надані в <a href="https://support.crowdin.com/modifying-project-participants-roles/">документації Crowdin</a>:</p><h3 id="owner-"><strong>Owner (власник)</strong></h3><blockquote>Людина, яка створила проєкт і має повний контроль над ним. Власник може запрошувати та керувати членами проєкту, створювати проєкти, завантажувати вихідні файли та файли перекладу до проєкту, налаштовувати інтеграції тощо.</blockquote><h3 id="manager-"><strong>Manager (менеджер)</strong></h3><blockquote>Має схожі права, як і власник проєкту, але не може керувати деякими ресурсами власника (наприклад, налаштовувати движки MT, налаштовувати користувацькі робочі процеси тощо) та видаляти проєкти.</blockquote><h3 id="language-coordinator-"><strong>Language Coordinator (координатор мови)</strong></h3><blockquote>Може керувати певними функціями проєкту лише в межах мов, до яких має доступ. Координатори мов можуть перекладати та затверджувати рядки, керувати членами команди та запитами на приєднання, генерувати звіти про проєкт, створювати завдання та попередньо перекладати вміст проєкту. На відміну від менеджерів, вони не мають доступу до інших налаштувань проєкту (наприклад, файлів проєкту, інтеграцій тощо).</blockquote><h3 id="developer-"><strong>Developer (розробник)</strong></h3><blockquote>Може завантажувати файли, редагувати текст для перекладу, підключати інтеграції та використовувати API. Не може керувати завданнями проєкту, членами команди та звітами.</blockquote><h3 id="proofreader-"><strong>Proofreader (редактор)</strong></h3><blockquote>Може перекладати та затверджувати рядки. Не має доступу до налаштувань проєкту.</blockquote><h3 id="translator-"><strong>Translator (перекладач)</strong></h3><blockquote>Може перекладати рядки та голосувати за переклади, додані іншими членами команди.</blockquote><h3 id="blocked-"><strong>Blocked (заблокований користувач)</strong></h3><blockquote>Не має доступу до проєкту.</blockquote><!--kg-card-begin: html--><h3 id="як-призначити-або-змінити-посаду">🔶 Як призначити або змінити посаду</h3><!--kg-card-end: html--><p>У вас є два варіанти, щоб призначити чи змінити посаду члена команди:</p><ul><li>ви можете вказати посаду у запрошенні;</li><li>ви можете вказати посаду на сторінці профілю цієї людини.</li></ul><h4 id="--45"><strong>Як встановити посаду у запрошенні</strong></h4><p>Ви можете вибрати посаду, коли надсилаєте запрошення новому члену команди.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/select-role.png" class="kg-image" alt="select-role" width="600" height="400" loading="lazy"><figcaption>Вкажіть посаду у запрошенні.</figcaption></figure><h4 id="--46"><strong>Як встановити посаду на сторінці профілю</strong></h4><p>Ви також можете перейти до вкладки <code>Permissions</code> на сторінці профілю цієї людини, щоб вибрати посади і мови, які ви хочете призначити.</p><p>Ось приклад з <a href="https://support.crowdin.com/modifying-project-participants-roles/#languages-permissions">документації Crowdin</a>:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-82.png" class="kg-image" alt="image-82" width="600" height="400" loading="lazy"><figcaption>Вкажіть посаду у вкладці «Permissions». Зображення з <a href="https://support.crowdin.com/modifying-project-participants-roles/#languages-permissions">документації Crowdin</a>.</figcaption></figure><p>Натисніть на кнопку <code>Save</code>, щоб зберегти зміни.</p><!--kg-card-begin: html--><h3 id="менеджери-проєкту">🔶 Менеджери проєкту</h3><!--kg-card-end: html--><p>Менеджери проєкту відіграють ключову роль для команди та проєкту. Вони можуть мати необмежений контроль над усім проєктом та допомагати координувати й призначати завдання іншим членам команди.</p><h3 id="--47"><strong>Як додати менеджера проєкту</strong></h3><p>Подивимося, як ви можете додати менеджера до свого проєкту. Ви можете призначити посаду менеджера, коли надсилаєте запрошення:</p><ul><li>перейдіть до свого проєкту;</li><li>перейдіть до вкладки <code>Members</code>;</li><li>натисніть на <code>Invite</code>.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/invite-button-4.png" class="kg-image" alt="invite-button-4" width="600" height="400" loading="lazy"><figcaption>Вкладка «Members».</figcaption></figure><p>Натисніть на <code>Translator</code>. Ви побачите всі можливі посади.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/select-role-manager-1.png" class="kg-image" alt="select-role-manager-1" width="600" height="400" loading="lazy"><figcaption>Виберіть посаду.</figcaption></figure><p>Виберіть <code>Manager</code>. Це надасть необмежений контроль над усім проєктом.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/manager-1.png" class="kg-image" alt="manager-1" width="600" height="400" loading="lazy"><figcaption>Посада «Manager».</figcaption></figure><p>Ще один спосіб додати менеджера — зі сторінки власного профілю:</p><ul><li>перейдіть до свого профілю;</li><li>перейдіть до вкладки <code>Managers</code>;</li><li>натисніть на <code>Add Manager</code>.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/managers-tab-profile-2.png" class="kg-image" alt="managers-tab-profile-2" width="600" height="400" loading="lazy"><figcaption>Кнопка «Add Manager».</figcaption></figure><p>Введіть ім’я або ім’я користувача менеджера, повідомлення, дозволи, які ви хочете надати, та проєкти, якими буде керувати цей менеджер.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/invite-manager-from-profile.png" class="kg-image" alt="invite-manager-from-profile" width="600" height="400" loading="lazy"><figcaption>Вікно «Invite Manager».</figcaption></figure><h3 id="--48"><strong>Редагування дозволів менеджера</strong></h3><p>На Crowdin також можна редагувати дозволи менеджера.</p><p>Для цього:</p><ol><li>Перейдіть до свого профілю.</li><li>Перейдіть до вкладки <code>Managers</code>. Ви побачите список менеджерів, доданих до проєкту.</li><li>Двічі натисніть на менеджера, дозволи якого хочете змінити.</li></ol><p>Ось приклад з <a href="https://support.crowdin.com/manager-permissions/#editing-manager-permissions">документації Сrowdin</a>:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-83.png" class="kg-image" alt="image-83" width="600" height="400" loading="lazy"><figcaption>Приклад вкладки «Managers». Зображення з <a href="https://support.crowdin.com/manager-permissions/#editing-manager-permissions">документації Сrowdin</a>.</figcaption></figure><p>4. Оновіть дозволи цього менеджера.</p><p>5. Натисніть на кнопку <code>Save</code>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/edit-permissions.png" class="kg-image" alt="edit-permissions" width="600" height="400" loading="lazy"><figcaption>Зображення з <a href="https://support.crowdin.com/manager-permissions/#editing-manager-permissions">документації Сrowdin</a>.</figcaption></figure><h3 id="--49"><strong>Як видалити менеджера</strong></h3><p>Щоб видалити менеджера:</p><ul><li>перейдіть до свого профілю;</li><li>перейдіть до вкладки <code>Managers</code>;</li><li>виберіть менеджера, якого хочете видалити;</li><li>натисніть на <code>Remove</code>.</li></ul><h3 id="--50"><strong>Менеджер та редактор</strong></h3><p>Менеджери та редактори на Crowdin мають певні відмінності у своїх посадах і дозволах.</p><p>Команда Crowdin надала роз’яснення у <a href="https://support.crowdin.com/modifying-project-participants-roles/#qa">документації</a>:</p><blockquote><strong>Запитання:</strong> Я власник проєкту. Мені запрошувати менеджера чи редактора?<br><br><strong>Відповідь:</strong> Основна відмінність між менеджером та редактором полягає в наступному: крім затвердження перекладів, доданих перекладачами, менеджери також можуть запрошувати та видаляти членів команди, завантажувати вихідні файли та файли перекладу до проєкту, налаштовувати інтеграції тощо.<br><br>Якщо ви хочете мати члена команди, який матиме доступ до вищезазначених функцій, вам потрібно запрошувати менеджера. А якщо ви плануєте самостійно керувати проєктом, достатньо запросити редактора.</blockquote><!--kg-card-begin: html--><h3 id="завдання">🔶 Завдання</h3><!--kg-card-end: html--><p>Організація — ключ до успіху будь-якого проєкту, і Crowdin точно це знає. Саме тому вони ввели дуже корисні інструменти під назвою <code>Tasks</code>, щоб допомогти з організацією проєкту та координацією завдань серед членів команди.</p><p>За допомогою завдань ви можете призначати конкретні файли перекладачам та редакторам, встановлювати дати виконання, отримувати сповіщення, обговорювати завдання з іншими членами команди та навіть розділяти слова з одного файлу між різними членами команди.</p><p>Ви також можете відстежувати стан кожного завдання на візуальній дошці, де можна перетягувати завдання з одного стану в інший.</p><p>Розглянемо деталі.</p><h3 id="--51"><strong>Як створити нове завдання</strong></h3><p>Щоб створити нове завдання:</p><ul><li>перейдіть до свого проєкту;</li><li>натисніть на кнопку <code>Create Task</code>.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/tasks-tab-section-1.png" class="kg-image" alt="tasks-tab-section-1" width="600" height="400" loading="lazy"><figcaption>Завдання на Crowdin.</figcaption></figure><p>💡 <strong>Важливо<strong>:</strong></strong> завдання можна призначити лише до одного проєкту.</p><p>Після натискання на кнопку ви побачите форму, де можете ввести всі деталі нового завдання.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/new-task-1.png" class="kg-image" alt="new-task-1" width="600" height="400" loading="lazy"><figcaption>Створення нового завдання.</figcaption></figure><p>До деталей нового завдання належать:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/task-2.png" class="kg-image" alt="task-2" width="600" height="400" loading="lazy"><figcaption>Інформація про завдання (частина 1).</figcaption></figure><ul><li>назва;</li><li>опис;</li><li>тип (переклад чи редакція власними перекладачами або посередниками);</li><li>дедлайн (необов’язково);</li><li>рядки, призначені до завдання (всі рядки обраних файлів або тільки рядки, змінені протягом певного періоду).</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/task-3.png" class="kg-image" alt="task-3" width="600" height="400" loading="lazy"><figcaption>Інформація про завдання (частина 2).</figcaption></figure><ul><li>фільтр за мітками (мітки, які повинні мати рядки завдання);</li><li>виключити мітки (мітки, які не повинні мати рядки завдання);</li><li>ви можете опустити рядки, які вже належать до інших завдань, щоб уникнути повторень;</li><li>файли, які потрібно перекласти чи відредагувати;</li><li>цільові мови. Якщо завдання має більше однієї цільової мови, система створить завдання для кожної цільової мови.</li></ul><p>Щоб призначити членів команди до завдання для кожної цільової мови, натисніть на опцію <code>Assign</code> поруч з кожною мовою.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/assign-task-1.png" class="kg-image" alt="assign-task-1" width="600" height="400" loading="lazy"><figcaption>Кнопка «Assign».</figcaption></figure><p>Після натискання на <code>Assign</code> ви побачите такі опції:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/assign-members-1.png" class="kg-image" alt="assign-members-1" width="600" height="400" loading="lazy"><figcaption>Призначте членів команди.</figcaption></figure><ul><li>Виберіть користувачів, до яких хочете призначити завдання. Користувачів можна знайти за допомогою інструмента фільтрації;</li><li>якщо вам потрібно видалити користувача, просто натисніть на нього в списку справа. Ви можете очистити список, натиснувши на значок сміттєвого кошика.</li></ul><p>💡 <strong>Важливо<strong>:</strong></strong> ви також можете розділити файл, щоб призначити до нього декількох користувачів.</p><ul><li>Як тільки ви обрали всіх користувачів, натисніть на кнопку <code>Apply</code>.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/select-all-users.png" class="kg-image" alt="select-all-users" width="600" height="400" loading="lazy"><figcaption>Користувачі, обрані для завдання.</figcaption></figure><p>Ви побачите зображення профілю призначених членів команди у рядку відповідної мови.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/assigned-members-list-1.png" class="kg-image" alt="assigned-members-list-1" width="600" height="400" loading="lazy"><figcaption>Призначені члени команди.</figcaption></figure><p>Натисніть на <code>Create Task</code>, щоб створити нове завдання. Ви побачите інформаційну панель завдань з новим завданням для всіх мов, які ви обрали.</p><p>Я вибрала іспанську мову та призначила завдання собі:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/task-board-1.png" class="kg-image" alt="task-board-1" width="600" height="400" loading="lazy"><figcaption>Інформаційна панель «Tasks».</figcaption></figure><h3 id="--52"><strong>Інформаційна панель завдань</strong></h3><p>Прийшов час використати інформаційну панель завдань. Ця панель дуже корисна для перегляду всіх завдань проєкту та відстеження їхнього стану.</p><p>Ви одразу ж помітите, що завдання може мати три можливі стани:</p><ul><li>To Do;</li><li>In Progress;</li><li>Done.</li></ul><p><strong><strong>💡 </strong>Важливо<strong>:</strong></strong> менеджери проєкту можуть переміщати завдання з одного стану в інший, перетягуючи їх.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/task-board-1.png" class="kg-image" alt="task-board-1" width="600" height="400" loading="lazy"><figcaption>Інформаційна панель «Tasks».</figcaption></figure><p>Щоб побачити всі завдання конкретною цільовою мовою, просто натисніть на цю мову і ви побачите «картки» з відповідною інформацією.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/task-board-2-1.png" class="kg-image" alt="task-board-2-1" width="600" height="400" loading="lazy"><figcaption>Інформаційна панель «Tasks».</figcaption></figure><p><strong><strong>💡 </strong>Важливо<strong>:</strong></strong> якщо завдання призначено вам, ви побачите сіру зірочку біля його назви. Ви також можете шукати та фільтрувати завдання.</p><h3 id="--53"><strong>Як фільтрувати завдання</strong></h3><p>Ви можете переглянути завдання, призначені конкретному члену команди, за допомогою фільтрів:</p><ul><li>натисніть на <code>Filters</code>;</li><li>натисніть на <code>All users</code> (біля <code>Filter by</code>);</li><li>знайдіть ім’я користувача;</li><li>натисніть на ім’я користувача.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/filter-by-members-1.png" class="kg-image" alt="filter-by-members-1" width="600" height="400" loading="lazy"><figcaption>Фільтрування завдань.</figcaption></figure><p>💡 <strong>Важливо<strong>: </strong></strong>щоб очистити фільтр, натисніть на опцію <code>Clear filter</code> справа.</p><h3 id="--54"><strong>Деталі завдання</strong></h3><p>Деталі завдання — це базова інформація та структура завдання. Так ви можете побачити:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/Screenshot-2023-09-20-at-10.17.37-AM.png" class="kg-image" alt="Screenshot-2023-09-20-at-10.17.37-AM" width="600" height="400" loading="lazy"><figcaption>Завдання.</figcaption></figure><ul><li>чи завдання призначене вам (якщо так, є сіра зірочка);</li><li>номер завдання;</li><li>назву завдання;</li><li>дату створення;</li><li>чи завдання будуть перекладати/редагувати члени команди чи постачальники;</li><li>зображення профілів членів команд, до яких призначено завдання;</li><li>кількість слів;</li><li>кількість коментарів.</li></ul><p>Якщо натиснути на завдання, ви побачите детальнішу інформацію:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/detailed-task-view.png" class="kg-image" alt="detailed-task-view" width="600" height="400" loading="lazy"><figcaption>Деталі завдання.</figcaption></figure><h3 id="--55"><strong>Як додати коментарі до завдання</strong></h3><p>Прокрутіть вниз, щоб додати коментарі до завдання.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/detailed-task-view-2-copy-1.png" class="kg-image" alt="detailed-task-view-2-copy-1" width="600" height="400" loading="lazy"><figcaption>Додайте коментарі до завдання.</figcaption></figure><h3 id="--56"><strong>Як змінити стан завдання</strong></h3><p>З детальнішого перегляду завдання ви також зможете змінити стан завдання, просто натиснувши на відповідну кнопку:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/change-status-1.png" class="kg-image" alt="change-status-1" width="600" height="400" loading="lazy"><figcaption>Опції завдання.</figcaption></figure><p>Якщо ви зміните стан завдання за допомогою цих кнопок, ви також побачите зміни на основній панелі завдань, що буде еквівалентно перетягуванню в новий стан.</p><h3 id="--57"><strong>Як керувати завданнями</strong></h3><p>Якщо ви натиснете на завдання, щоб переглянути його деталі, а потім натиснете на три крапки у верхньому правому куті, щоб побачити більше опцій, ви зможете відредагувати, закрити та видалити завдання.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/edit-a-task-2.png" class="kg-image" alt="edit-a-task-2" width="600" height="400" loading="lazy"><figcaption>Більше опцій для керування завданнями.</figcaption></figure><h3 id="--58"><strong>Як редагувати завдання</strong></h3><p>Що ви побачите, якщо спробуєте відредагувати завдання:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/editing-a-task.png" class="kg-image" alt="editing-a-task" width="600" height="400" loading="lazy"><figcaption>Панель «Edit Task».</figcaption></figure><p>Це дуже схоже на те, що ми бачили, коли створювали завдання. Ви можете змінити призначені рядки, файли, дати і навіть скинути обсяг завдання та прогрес для призначених файлів.</p><h3 id="--59"><strong>Як закрити завдання</strong></h3><p>Щоб закрити завдання, натисніть на <code>Close</code>:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/edit-a-task-2.png" class="kg-image" alt="edit-a-task-2" width="600" height="400" loading="lazy"><figcaption>Більше опцій для керування завданнями.</figcaption></figure><h3 id="--60"><strong>Як переглянути всі закриті завдання</strong></h3><p>Щоб переглянути всі закриті завдання:</p><ul><li>перейдіть до свого проєкту;</li><li>перейдіть до вкладки <code>Tasks</code>;</li><li>виберіть <code>Closed</code> (біля <code>All</code>).</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/closed-tasks.png" class="kg-image" alt="closed-tasks" width="600" height="400" loading="lazy"></figure><p>💡 <strong>Важливо<strong>:</strong></strong> <code>Done</code> та <code>Closed</code> трохи відрізняються. Завдання може мати стан <code>Done</code>, але не бути закритим. Якщо завдання має стан <code>Done</code>, ви побачите кнопку на картці для його закриття, як на зображенні нижче:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/close-task-when-done-1.png" class="kg-image" alt="close-task-when-done-1" width="600" height="400" loading="lazy"><figcaption>Кнопка «Close» для завдання, позначеного як завершене.</figcaption></figure><h3 id="--61"><strong>Як відкрити завдання заново</strong></h3><p>Якщо ви закрили завдання, а потім зрозуміли, що його потрібно відкрити заново, то:</p><ul><li>відкрийте деталі закритого завдання;</li><li>натисніть на три крапки справа, щоб переглянути додаткові опції;</li><li>виберіть <code>Reopen</code>.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/reopen-task.png" class="kg-image" alt="reopen-task" width="600" height="400" loading="lazy"><figcaption>Відкрийте завдання заново.</figcaption></figure><p>Тепер ви побачите відкрите завдання у стовпці <code>To do</code> на панелі завдань.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/todo-task-1.png" class="kg-image" alt="todo-task-1" width="600" height="400" loading="lazy"><figcaption>Завдання, відкрите заново.</figcaption></figure><h3 id="--62"><strong>Як видалити завдання</strong></h3><p>Щоб видалити завдання:</p><ul><li>відкрийте деталі завдання;</li><li>натисніть на три крапки;</li><li>виберіть <code>Delete</code>.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/delete-a-task.png" class="kg-image" alt="delete-a-task" width="600" height="400" loading="lazy"><figcaption>Видаліть завдання.</figcaption></figure><h3 id="--63"><strong>Як переглянути всі завдання, призначені мені</strong></h3><p>Якщо ви берете участь у проєкті, ви можете переглянути всі завдання, призначені вам, виконавши наступні кроки:</p><ul><li>перейдіть до свого профілю;</li><li>перейдіть до вкладки <code>To do</code>;</li><li>ви побачите всі завдання, призначені вам, і архівовані завдання.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/see-all-my-tasks-1.png" class="kg-image" alt="see-all-my-tasks-1" width="600" height="400" loading="lazy"><figcaption>Вкладка «To Do» на профілі.</figcaption></figure><p>💡<strong><strong> </strong>Важливо<strong>: </strong></strong>у верхній частині ви також знайдете поле пошуку для фільтрації завдань і опцію фільтрації завдань за проєктами.</p><p>Це основна інформація, яку ви побачите для кожного завдання:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/todo-tasks-profile.png" class="kg-image" alt="todo-tasks-profile" width="600" height="400" loading="lazy"><figcaption>Завдання у вкладці «To Do» на профілі.</figcaption></figure><ul><li>номер завдання;</li><li>стан завдання;</li><li>проєкт;</li><li>цільова мова;</li><li>кількість слів.</li></ul><p>Ви також побачите дві опції:</p><ul><li>відкрити редактор перекладу і почати працювати над завданням;</li><li>архівувати завдання.</li></ul><h3 id="--64"><strong>Важливі запитання щодо завдань</strong></h3><p><a href="https://support.crowdin.com/enterprise/tasks/#qa">У документації Crowdin</a> зазначено:</p><blockquote><strong>Запитання:</strong> Як оновлення вихідного файлу впливає на наявні завдання з перекладу та редагування?<br><br><strong>Відповідь:</strong> Після оновлення вихідного файлу список рядків, які містить завдання, буде оновлено наступним чином:<br><br>- рядки, видалені з вихідного файлу під час оновлення, будуть видалені із завдання;<br>- змінені рядки, позначені опцією «Keep Translations», з’являться в завданні зі зміненим текстом;<br>- нові додані рядки не вплинуть на завдання жодним чином.<br><br>Якщо вихідний файл буде відновлено до версії, що містить видалені рядки, вони знову з’являться в завданні.</blockquote><!--kg-card-begin: html--><h3 id="звіти">🔶 Звіти</h3><!--kg-card-end: html--><p>Звіти можуть бути дуже корисними для власника або менеджера проєкту, щоб розуміти поточний прогрес та активність команди.</p><p>Crowdin має функцію звітів, де можна перевірити стан свого проєкту. Ось звіт демопроєкту, з яким ми працювали:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/project-reports.png" class="kg-image" alt="project-reports" width="600" height="400" loading="lazy"><figcaption>Вкладка «Reports».</figcaption></figure><p>Щоб отримати звіт проєкту:</p><ul><li>перейдіть до свого проєкту;</li><li>перейдіть до вкладки <code>Reports</code>.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/Screenshot-2023-09-20-at-11.31.20-AM.png" class="kg-image" alt="Screenshot-2023-09-20-at-11.31.20-AM" width="600" height="400" loading="lazy"><figcaption>Звіт (частина 1).</figcaption></figure><p>За замовчуванням ви побачите стан проєкту, але за потреби можете переключитися на звіти про витрати.</p><p>Тут ви можете побачити деякі знімки екрана з типами даних, які можна аналізувати та візуалізувати за допомогою цих звітів:</p><ul><li>загальний розмір проєкту та кількість рядків для перекладу;</li><li>вихідна та цільова мови;</li><li>кількість членів проєкту;</li><li>кількість менеджерів;</li><li>кількість слів для перекладу;</li><li>кількість прихованих слів;</li><li>кількість повторюваних слів;</li><li>кількість перекладених слів;</li><li>кількість затверджених слів;</li><li>кількість нових членів команди;</li><li>кількість активних членів команди.</li></ul><p>Ви можете переглянути звіти з відповідним відсотковим збільшенням або зменшенням для обраного періоду часу.</p><p>Ви також знайдете діаграми активності перекладу з відповідними легендами.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/Screenshot-2023-09-20-at-11.34.02-AM.png" class="kg-image" alt="Screenshot-2023-09-20-at-11.34.02-AM" width="600" height="400" loading="lazy"><figcaption>Звіт (частина 2).</figcaption></figure><p>Ви знайдете діаграми активності редагування.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/Screenshot-2023-09-20-at-11.34.11-AM.png" class="kg-image" alt="Screenshot-2023-09-20-at-11.34.11-AM" width="600" height="400" loading="lazy"></figure><p>А також діаграми активності вихідних рядків тощо.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/Screenshot-2023-09-20-at-11.34.13-AM.png" class="kg-image" alt="Screenshot-2023-09-20-at-11.34.13-AM" width="600" height="400" loading="lazy"></figure><p>Ви також можете змінити одиницю виміру звіту, натиснувши на цю опцію:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/report-unit.png" class="kg-image" alt="report-unit" width="600" height="400" loading="lazy"></figure><p>Ви можете вибрати:</p><ul><li>рядки;</li><li>слова;</li><li>символи без пробілів;</li><li>символи з пробілами.</li></ul><p>У <a href="https://support.crowdin.com/project-reports/?q=reports">документації Crowdin</a> ви можете знайти приклади діаграм активності перекладу, активності редагування та активності вихідних рядків:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translation-activity-chart-1.png" class="kg-image" alt="translation-activity-chart-1" width="600" height="400" loading="lazy"><figcaption>Активність перекладу. Зображення з <a href="https://support.crowdin.com/project-reports/?q=reports">документації Crowdin</a>.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/Screenshot-2023-09-20-at-11.41.30-AM.png" class="kg-image" alt="Screenshot-2023-09-20-at-11.41.30-AM" width="600" height="400" loading="lazy"><figcaption>Активність редагування. Зображення з <a href="https://support.crowdin.com/project-reports/?q=reports">документації Crowdin</a>.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/Screenshot-2023-09-20-at-11.41.46-AM.png" class="kg-image" alt="Screenshot-2023-09-20-at-11.41.46-AM" width="600" height="400" loading="lazy"><figcaption>Активність вихідних рядків. Зображення з <a href="https://support.crowdin.com/project-reports/?q=reports">документації Crowdin</a>.</figcaption></figure><h3 id="--65"><strong>Звіт про найкращих членів команди</strong></h3><p>Команда — фундаментальна частина процесу локалізації. Наявність детального звіту про найвідданіших і найпродуктивніших членів команди завжди корисна.</p><p>Щоб створити звіт про найкращих членів команди:</p><ul><li>перейдіть до свого проєкту;</li><li>перейдіть до вкладки <code>Reports</code>;</li><li>натисніть на <code>Top Members</code>;</li><li>виберіть діапазон дат з календаря;</li><li>натисніть на <code>Generate</code>.</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/top-members-report.png" class="kg-image" alt="top-members-report" width="600" height="400" loading="lazy"></figure><p>Ви побачите список найкращих членів команди з інформацією про:</p><ul><li>їхні цільові мови;</li><li>скільки рядків вони переклали;</li><li>цільові слова;</li><li>скільки рядків вони затвердили;</li><li>скільки голосів вони подали.</li></ul><p>Ви також можете експортувати звіт у форматах XLSX, CSV або JSON і відтворити або приховати конкретні стовпці.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/export-report-1.png" class="kg-image" alt="export-report-1" width="600" height="400" loading="lazy"><figcaption>Опції експорту.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/show-or-hide-columns.png" class="kg-image" alt="show-or-hide-columns" width="600" height="400" loading="lazy"><figcaption>Відтворити або приховати стовпці.</figcaption></figure><!--kg-card-begin: html--><h3 id="бесіди-на-crowdin">🔶 Бесіди на Crowdin</h3><!--kg-card-end: html--><p>Спілкування є важливим для будь-якого успішного проєкту. Ви можете спілкуватись зі своєю командою безпосередньо на Crowdin за допомогою бесід.</p><p>За допомогою цієї функції ви можете спілкуватися з одним або декількома членами команди в приватному чаті. Кожна бесіда має тему, щоб ви могли легко їх знайти.</p><h3 id="--66"><strong>Як перейти до бесіди</strong></h3><p>Щоб перейти до бесіди:</p><p>Натисніть на відповідний значок у верхньому правому куті, поруч із зображенням профілю.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/conversation-button-1.png" class="kg-image" alt="conversation-button-1" width="600" height="400" loading="lazy"><figcaption>Кнопка «Conversations».</figcaption></figure><p>Перейдіть до <code>Create Conversation</code>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/create-conversations-1.png" class="kg-image" alt="create-conversations-1" width="600" height="400" loading="lazy"><figcaption>Створення бесіди.</figcaption></figure><p>Ви можете знайти користувачів за їхнім іменем або іменем користувача, а також відфільтрувати користувачів за проєктом.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/filter-users.png" class="kg-image" alt="filter-users" width="600" height="400" loading="lazy"><figcaption>Фільтрація користувачів.</figcaption></figure><p>Ось приклад з <a href="https://support.crowdin.com/conversations/">документації Crowdin</a>:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-86.png" class="kg-image" alt="image-86" width="600" height="400" loading="lazy"><figcaption>Бесіда. Зображення з <a href="https://support.crowdin.com/conversations/">документації Crowdin</a>.</figcaption></figure><h3 id="--67"><strong>Як керувати бесідами та повідомленнями</strong></h3><p>Для бесід ви можете:</p><ul><li>змінювати тему для всіх користувачів у бесіді;</li><li>вимикати сповіщення, щоб не отримувати повідомлення;</li><li>додавати користувачів.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-87.png" class="kg-image" alt="image-87" width="600" height="400" loading="lazy"><figcaption>Приклад бесіди. Зображення з <a href="https://support.crowdin.com/conversations/">документації Crowdin</a>.</figcaption></figure><p>Для окремих повідомлень у бесіді ви можете:</p><ul><li>поділитися повідомленням у тій самій бесіді або в іншій;</li><li>позначити повідомлення як непрочитане;</li><li>редагувати свої повідомлення;</li><li>видаляти свої повідомлення;</li><li>скаржитися на спам.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-88.png" class="kg-image" alt="image-88" width="600" height="400" loading="lazy"><figcaption>Приклад керування повідомленнями. Зображення з <a href="https://support.crowdin.com/conversations/#messages">документації Crowdin</a>.</figcaption></figure><p>🎉 Чудово! Тепер ви знаєте найважливіші функції Crowdin для команд та організацій.</p><p>Розглянемо, як можна інтегрувати Crowdin з іншими сервісами та як встановити застосунки, щоб підвищити продуктивність.</p><!--kg-card-begin: html--><h2 id="інтеграції-та-інструменти-для-підвищення-продуктивності-на-crowdin">🔹 Інтеграції та інструменти для підвищення продуктивності на Crowdin</h2><!--kg-card-end: html--><p>Однією з ключових характеристик Crowdin є його здатність до інтеграцій. Ви можете приєднати свій проєкт до різних зовнішніх сервісів для імпорту та експорту файлів і перекладів за потреби.</p><h2 id="--68"><strong>Що таке інтеграція?</strong></h2><p>Інтеграція на Crowdin — це «зв’язок», який ви можете створити між своїм проєктом і зовнішнім сервісом для автоматичної синхронізації файлів між цими платформами.</p><p>У <a href="https://store.crowdin.com/">Crowdin Store</a> ви можете знайти понад 600 застосунків та інтеграцій, які можна додати до свого проєкту.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/Crowdin-store.png" class="kg-image" alt="Crowdin-store" width="600" height="400" loading="lazy"><figcaption>Crowdin Store.</figcaption></figure><p>Їх можна відфільтрувати за:</p><ul><li>колекціями;</li><li>категоріями;</li><li>партнерами;</li><li>перевірками QA.</li></ul><p>Щоб надати вам уявлення про типи застосунків та інтеграцій, які ви можете знайти, ось деякі з рекомендованих:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/featured-integrations.png" class="kg-image" alt="featured-integrations" width="600" height="400" loading="lazy"><figcaption>Рекомендовані застосунки та інтеграції.</figcaption></figure><p>Розглянемо деякі з них детальніше.</p><h3 id="-github"><strong>Інтеграція GitHub</strong></h3><p>Якщо ваш проєкт розміщений у репозиторії GitHub, <a href="https://store.crowdin.com/github">інтеграція з GitHub</a> може бути саме тим, що вам потрібно.</p><blockquote>Інтеграція Crowdin з GitHub синхронізує файли оригіналу і перекладу між вашим репозиторієм на GitHub та проєктом перекладу на Crowdin. Усі перекладені та затверджені файли автоматично надсилатимуться як запит на злиття до гілки l10n у репозиторії на GitHub.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/GitHub-integration.png" class="kg-image" alt="GitHub-integration" width="600" height="400" loading="lazy"><figcaption>Інтеграція GitHub.</figcaption></figure><p>Щоб дізнатися більше про інтеграцію, ви можете ознайомитися з<a href="https://www.youtube.com/watch?v=8baL6VWnnZg"> інструкцією</a> від Crowdin.</p><h3 id="github-crowdin-action"><strong>GitHub Crowdin Action</strong></h3><p>Якщо вам потрібно автоматично завантажувати та скачувати файли з репозиторію на GitHub до проєкту на Crowdin, ця дія може бути дуже корисною для вас.</p><p><a href="https://store.crowdin.com/github-action">GitHub Crowdin Action</a> може:</p><ul><li>завантажувати вихідні файли на Crowdin;</li><li>завантажувати переклади на Crowdin;</li><li>скачувати переклади з Crowdin;</li><li>створювати PR з перекладами.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/github-crowdin-action.png" class="kg-image" alt="github-crowdin-action" width="600" height="400" loading="lazy"><figcaption>GitHub Crowdin Action.</figcaption></figure><p>Щоб дізнатися більше про інтеграцію, перегляньте <a href="https://www.youtube.com/watch?v=5b7BMuCoKGg">інструкцію</a> від команди Crowdin.</p><h3 id="-google-drive"><strong>Інтеграція Google Drive</strong></h3><p>Google Drive дуже зручний для створення, розміщення та спільного використання документів. З інтеграцією Google Drive ви можете легко перекладати свої файли на Crowdin.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/google-drive-integration.png" class="kg-image" alt="google-drive-integration" width="600" height="400" loading="lazy"><figcaption>Інтеграція Google Drive.</figcaption></figure><p>Щоб дізнатися більше про інтеграцію, перегляньте <a href="https://www.youtube.com/watch?v=M_WbdDQmEP8">інструкцію</a> від команди Crowdin.</p><h3 id="--69"><strong>Асистент ШІ</strong></h3><p>Через популярність великих мовних моделей (LLM), штучний інтелект став дуже важливим інструментом для перекладу та локалізації.</p><p>Crowdin має дуже корисного <a href="https://store.crowdin.com/localization-ai">асистента ШІ</a>, якого ви можете встановити для допомоги вам та вашій команді. Він описується як:</p><blockquote>Чат-бот AI для перекладачів, побудований на API ChatGPT від OpenAI. Перша версія цього застосунка працює як копілот для перекладачів. (<a href="https://store.crowdin.com/localization-ai">джерело</a>)</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/ai-assistant.png" class="kg-image" alt="ai-assistant" width="600" height="400" loading="lazy"><figcaption>Асистент ШІ.</figcaption></figure><p>Crowdin зазначає, що асистент ШІ має такі цікаві функції:</p><blockquote>Наш асистент ШІ має функцію інженерії запитів, що дозволяє перекладачам налаштувати запити перед початком проєкту. Таким чином вони можуть зручно змінювати контекст, підвищуючи точність і змістовність перекладів.</blockquote><p>Щоб дізнатися більше про інтеграцію, перегляньте <a href="https://www.youtube.com/watch?v=DSEu0iQanc4">інструкцію</a> від команди Crowdin.</p><h3 id="-visual-studio-code"><strong>Інтеграція Visual Studio Code</strong></h3><p>Якщо ви розробник, який працює з <a href="https://store.crowdin.com/visual-studio-code">Visual Studio Code</a>, то Crowdin потурбувався й про вас, оскільки команда розробила розширення для допомоги в перекладі вашого проєкту.</p><blockquote>Інтегруйте свої проєкти Visual Studio Code з Crowdin, щоб оптимізувати процес локалізації. <a href="https://marketplace.visualstudio.com/items?itemName=Crowdin.vscode-crowdin">Плагін IDE</a> дозволяє миттєво завантажити нові вихідні рядки до проєкту на Crowdin і скачати переклади. (<a href="https://store.crowdin.com/visual-studio-code">джерело</a>)</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/visual-studio-code.png" class="kg-image" alt="visual-studio-code" width="600" height="400" loading="lazy"><figcaption>Інтеграція Visual Studio Code.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/vs-code-extension.png" class="kg-image" alt="vs-code-extension" width="600" height="400" loading="lazy"><figcaption>Ринок розширень.</figcaption></figure><p>Ви можете дізнатися більше про розширення в <a href="https://marketplace.visualstudio.com/items?itemName=Crowdin.vscode-crowdin">офіційній документації</a> на ринку розширень Visual Studio Code.</p><h3 id="video-captions-translator"><strong>Video Captions Translator</strong></h3><p>Якщо вам або вашій організації потрібно перекладати відеосубтитри, Crowdin має інтеграцію і для цього. Вона називається <a href="https://store.crowdin.com/video-captions-translator">Video Captions Translator</a>.</p><blockquote>Професійні переклади для відеосубтитрів. Налаштуйте інтеграцію один раз, визначте свій процес локалізації та витрачайте менше часу на управління перекладами.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/video-captions-translator.png" class="kg-image" alt="video-captions-translator" width="600" height="400" loading="lazy"><figcaption>Video Captions Translator.</figcaption></figure><p>Щоб дізнатися більше про переклад субтитрів на YouTube з Crowdin, перегляньте <a href="https://www.youtube.com/watch?v=qq-lneH4ZCQ">інструкцію</a> від команди Crowdin.</p><h3 id="-google-sheets"><strong>Інтеграція Google Sheets</strong></h3><p>Якщо ви використовуєте <a href="https://store.crowdin.com/spreadsheet-crowdin">Google Sheets</a>, щоб керувати ключами локалізації, ви можете додати цю інтеграцію до свого проєкту для відтворення стовпців з відповідними полями на Crowdin, включно з:</p><ul><li>ключем;</li><li>вихідним текстом;</li><li>цільовими мовами (всі мови проєкту);</li><li>мітками;</li><li>контекстом;</li><li>максимальною довжиною перекладу.</li></ul><p>Зверніть увагу, що команда Crowdin повідомляє:</p><blockquote>Варто зазначити, що ця інтеграція синхронізує лише перший аркуш вашого документа Google Sheets.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/google-sheets.png" class="kg-image" alt="google-sheets" width="600" height="400" loading="lazy"><figcaption>Інтеграція Google Sheets.</figcaption></figure><p>Щоб дізнатися більше про інтеграцію з Google Sheets, перегляньте <a href="https://www.youtube.com/watch?v=7tOanqDiIJ8">інструкцію</a> від команди Crowdin.</p><h3 id="suggestions-diff-checker"><strong>Suggestions Diff Checker</strong></h3><p>Якщо ви коли-небудь шукали інструмент, який міг би допомогти вашим перекладачам і редакторам порівнювати переклади дуже легко за допомогою візуальних підказок, цей застосунок для вас.</p><p>Crowdin описує <a href="https://store.crowdin.com/diff-checker">Suggestions Diff Checker</a> як:</p><blockquote>Чудовий помічник для редакторів і перекладачів, який порівнює два переклади і показує різницю між ними.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/suggestions-diff-checker.png" class="kg-image" alt="suggestions-diff-checker" width="600" height="400" loading="lazy"><figcaption>Suggestions Diff Checker.</figcaption></figure><h3 id="proofreading-diff"><strong>Proofreading Diff</strong></h3><p>Редагування є дуже важливим завданням у процесі локалізації. Редактори можуть редагувати переклади та переконатися, що вони настільки точні, наскільки це можливо.</p><p>За допомогою застосунку <a href="https://store.crowdin.com/proofreading-diff">Proofreading Diff</a> ви можете:</p><blockquote>Відстежувати та аналізувати зміни, внесені під час процесу редагування. Цей інструмент може допомогти надати детальний відгук перекладачам про їхню роботу.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/proofreading-diff.png" class="kg-image" alt="proofreading-diff" width="600" height="400" loading="lazy"><figcaption>Proofreading Diff.</figcaption></figure><h3 id="video-preview"><strong>Video Preview</strong></h3><p>Переклад субтитрів без одночасного перегляду відео може бути досить складним, оскільки для точного перекладу важливо знати повний контекст.</p><p>Ось чому Crowdin створив застосунок для підвищення продуктивності перекладачів під назвою <a href="https://store.crowdin.com/preview-video">Video Preview</a>. Вони описують його як:</p><blockquote>Зручний інструмент, який може бути корисним для перекладу субтитрів. Він дозволяє вказати посилання на відео для кожного файлу з субтитрами та дозволяє перекладачам переглядати відео під час роботи над перекладом.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/video-preview.png" class="kg-image" alt="video-preview" width="600" height="400" loading="lazy"><figcaption>Video Preview.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-96.png" class="kg-image" alt="image-96" width="600" height="400" loading="lazy"><figcaption>Video Preview в дії. Зображення з <a href="https://store.crowdin.com/preview-video">документації Crowdin</a>.</figcaption></figure><h3 id="glossary-editor"><strong>Glossary Editor</strong></h3><p>Це ще один корисний застосунок Crowdin для управління глосаріями.</p><p>Crowdin зазначає, що <a href="https://store.crowdin.com/glossary-edit-app">Glossary Editor</a>:</p><blockquote>Дозволяє додавати та змінювати терміни з глосаріїв безпосередньо в редакторі Crowdin.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/glossary-editor.png" class="kg-image" alt="glossary-editor" width="600" height="400" loading="lazy"><figcaption>Glossary Editor.</figcaption></figure><h3 id="project-duplicator"><strong>Project Duplicator</strong></h3><p>Вам коли-небудь хотілося використати проєкт як шаблон для іншого проєкту та заощадити час на початковому налаштуванні?</p><p>Якщо так, то <a href="https://store.crowdin.com/create-project-app">Project Duplicator</a> — саме те, що вам потрібно:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/project-duplicator.png" class="kg-image" alt="project-duplicator" width="600" height="400" loading="lazy"><figcaption>Project Duplicator.</figcaption></figure><p>За допомогою Project Duplicator ви можете копіювати такі налаштування:</p><ul><li>вихідна мова;</li><li>перевірки якості;</li><li>вихідні рядки;</li><li>переклади;</li><li>пам’ять перекладів;</li><li>сповіщення;</li><li>мапування мов.</li></ul><h3 id="-unity"><strong>Інтеграція Unity</strong></h3><p>Якщо ви розробник ігор і працюєте з Unity, ця інтеграція саме для вас.</p><p>За допомогою <a href="https://store.crowdin.com/unity">Unity Integration</a> ви можете:</p><blockquote>Перекладати матеріал у своїх таблицях і скачувати переклади для Unity.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/unity.png" class="kg-image" alt="unity" width="600" height="400" loading="lazy"><figcaption>Інтеграція Unity.</figcaption></figure><p>Ось офіційний знімок екрана плагіна Crowdin для Unity:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-101.png" class="kg-image" alt="image-101" width="600" height="400" loading="lazy"><figcaption>Зображення з <a href="https://store.crowdin.com/unity">документації Crowdin</a>.</figcaption></figure><h3 id="is-crowdin-slow-for-everyone-or-just-me"><strong>Is Crowdin slow for everyone or just me?</strong></h3><p>Так, це офіційна назва інструменту для підвищення продуктивності перекладачів на Crowdin! 🙂 Це віджет для вимірювання вашого інтернет-з’єднання.</p><p>Crowdin <a href="https://store.crowdin.com/internet-speed">зазначає</a>, що він може бути корисним, якщо вам потрібно:</p><blockquote>Миттєве визначення, чи повільна робота спричинена вашим інтернет-з’єднанням, чи це проблема продуктивності Crowdin.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/is-crowdin-slow.png" class="kg-image" alt="is-crowdin-slow" width="600" height="400" loading="lazy"><figcaption>Is Crowdin slow for everyone or just me?</figcaption></figure><p>Ось офіційний знімок екрана віджету:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-97.png" class="kg-image" alt="image-97" width="600" height="400" loading="lazy"><figcaption>Зображення з <a href="https://store.crowdin.com/internet-speed">документації Crowdin</a>.</figcaption></figure><h3 id="units-converter"><strong>Units Converter</strong></h3><p>Ви дізналися, що локалізація ширша за переклад. Одиниці є чудовим прикладом цього.</p><p>Коли ви локалізуєте продукт, який використовує одиниці довжини, площі, маси, об’єму, температури, швидкості тощо, вам знадобиться інструмент для швидкого перетворення.</p><p>Crowdin зазначає, що:</p><blockquote>Цей застосунок особливо зручний при локалізації для культур, які використовують різні системи вимірювання.</blockquote><p>Застосунок <a href="https://store.crowdin.com/units_converter">Units Converter</a> допоможе заощадити багато часу, оскільки ви можете мати його у своєму редакторі перекладу та швидко конвертувати одиниці, не зупиняючи процес локалізації, щоб перейти до іншого інструмента.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/units-converter.png" class="kg-image" alt="units-converter" width="600" height="400" loading="lazy"><figcaption>Units Converter.</figcaption></figure><p>Ось офіційний знімок екрана застосунку:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-98.png" class="kg-image" alt="image-98" width="600" height="400" loading="lazy"><figcaption>Застосунок Units Converter. Зображення з <a href="https://store.crowdin.com/units_converter">документації Crowdin</a>.</figcaption></figure><h3 id="screenshots-uploader"><strong>Screenshots Uploader</strong></h3><p>Візуальний контекст є важливим для написання якісних перекладів.</p><p>Застосунок <a href="https://store.crowdin.com/screenshots-uploader">Screenshots Uploader</a>:</p><blockquote>Полегшує отримання візуального контексту для вашої команди.</blockquote><p>Ви можете:</p><ul><li>дозволити перекладачам завантажувати знімки екрана;</li><li>вставляти знімки екрана з історії буфера обміну, не зберігаючи їх на своєму пристрої;</li><li>редагувати знімки екрана перед завантаженням за допомогою корисних інструментів, серед яких обрізання, збільшення тощо.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/screenshots-uploader.png" class="kg-image" alt="screenshots-uploader" width="600" height="400" loading="lazy"><figcaption>Screenshots Uploader.</figcaption></figure><h3 id="directory-notifications"><strong>Directory Notifications</strong></h3><p>Застосунок <a href="https://store.crowdin.com/directory-notification">Directory Notifications</a> корисний для власників та менеджерів проєктів, оскільки Crowdin буде:</p><blockquote>Надсилати сповіщення електронною поштою щоразу, коли каталог файлів у вашому проєкті Crowdin буде перекладений або відредагований.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/directory-notifications.png" class="kg-image" alt="directory-notifications" width="600" height="400" loading="lazy"><figcaption>Directory Notifications.</figcaption></figure><p>Ось офіційний знімок екрана застосунку:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-100.png" class="kg-image" alt="image-100" width="600" height="400" loading="lazy"><figcaption>Зображення з <a href="https://store.crowdin.com/directory-notification">документації Crowdin</a>.</figcaption></figure><h3 id="emoji-input-for-editor"><strong>Emoji Input for Editor</strong></h3><p>Емоджі чудові, правда ж? Всі ми згодні з цим. 😁</p><p>На щастя, Crowdin має <a href="https://store.crowdin.com/emoji">Emoji Input for Editor</a>. Його описують як:</p><blockquote>Застосунок зі списком емоджі для редактора на Crowdin для легкого доступу з функцією розширеного пошуку.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/emoji-input.png" class="kg-image" alt="emoji-input" width="600" height="400" loading="lazy"><figcaption>Emoji Input for Editor.</figcaption></figure><p>Ось офіційний знімок екрана застосунку:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-99.png" class="kg-image" alt="image-99" width="600" height="400" loading="lazy"><figcaption>Зображення з <a href="https://store.crowdin.com/emoji">документації Crowdin</a>.</figcaption></figure><h3 id="emoji-mismatch"><strong>Emoji Mismatch</strong></h3><p>А тепер розглянемо корисні автоматизовані перевірки якості (QA), доступні для облікових записів Crowdin Enterprise.</p><p>Перший — це <a href="https://store.crowdin.com/emoji-mismatch-custom">Emoji Mismatch</a>, який може допомогти нам знайти:</p><blockquote>Пропущені, зайві або невідповідні емоджі у перекладі.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/Emoji-Mismatch.png" class="kg-image" alt="Emoji-Mismatch" width="600" height="400" loading="lazy"><figcaption>Emoji Mismatch.</figcaption></figure><p>Зверніть увагу, що цей інструмент працює з Crowdin Enterprise.</p><h3 id="space-after-punctuation"><strong>Space After Punctuation</strong></h3><p>Це дуже корисний інструмент перевірки якості, який ви можете додати до свого проєкту.</p><p>Crowdin зазначає, що <a href="https://store.crowdin.com/space-after-punctuation-custom">Space After Punctuation</a>:</p><blockquote>Перевіряє, чи переклад містить пробіли після розділових знаків.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/space-after-punctuation.png" class="kg-image" alt="space-after-punctuation" width="600" height="400" loading="lazy"><figcaption>Space After Punctuation.</figcaption></figure><p>Зверніть увагу, що цей інструмент працює з Crowdin Enterprise.</p><h3 id="url-localization"><strong>URL Localization</strong></h3><p>Це інструмент перевірки якості, який ви також можете встановити для свого проєкту. За допомогою <a href="https://store.crowdin.com/url-localization-custom">URL localization</a> ви можете перевірити:</p><blockquote>Помилки в посиланнях у перекладі відповідно до конфігурації перевірки якості.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/url-localization.png" class="kg-image" alt="url-localization" width="600" height="400" loading="lazy"><figcaption>URL Localization.</figcaption></figure><p>Зверніть увагу, що цей інструмент працює з Crowdin Enterprise.</p><h3 id="duplicated-words"><strong>Duplicated Words</strong></h3><p>Це чудовий інструмент для редагування. Crowdin зазначає, що <a href="https://store.crowdin.com/duplicated-words-custom">Duplicated Words</a>:</p><blockquote>Видаляє друге повторюване слово в перекладі.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/duplicated-words.png" class="kg-image" alt="duplicated-words" width="600" height="400" loading="lazy"><figcaption>Duplicated words.</figcaption></figure><p>Зверніть увагу, що цей інструмент працює з Crowdin Enterprise.</p><h3 id="time-format-consistency"><strong>Time Format Consistency</strong></h3><p>Під час локалізації продукту також дуже важливо дотримуватись формату часу.</p><p>Crowdin <a href="https://store.crowdin.com/time-format-consistency">зазначає</a>, що:</p><blockquote>Цей інструмент перевіряє, чи узгоджені формати часу в оригіналі та перекладі. Він перевіряє формати часу у 24-годинному форматі (HH:MM).</blockquote><blockquote>Перевірка якості дає позитивний результат, якщо число та формат часу узгоджені між оригіналом й перекладом, і негативний результат, якщо є невідповідність.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/time-format-consistency.png" class="kg-image" alt="time-format-consistency" width="600" height="400" loading="lazy"><figcaption>Time Format Consistency.</figcaption></figure><p>Зверніть увагу, що цей інструмент працює з Crowdin Enterprise.</p><h3 id="camelcase-consistency-check"><strong>camelCase Consistency Check</strong></h3><p>Ця перевірка якості допомагає переконатися, що назви продуктів, брендів або інші назви, які повинні бути написані у верблюдячомуРегістрі, зберігають той самий формат у перекладі.</p><p>Crowdin <a href="https://store.crowdin.com/camelcase-check">зазначає</a>, що:</p><blockquote>Цей інструмент перевіряє, чи всі слова у верблюдячомуРегістрі з оригіналу точно зберігаються у перекладі.</blockquote><blockquote>Якщо слово у верблюдячомуРегістрі з оригіналу не знайдено у перекладі, то перевірка провалюється і повідомляє про це перекладача.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/camelcase-consistency-check.png" class="kg-image" alt="camelcase-consistency-check" width="600" height="400" loading="lazy"><figcaption>camelCase Consistency Check.</figcaption></figure><h3 id="--70"><strong>Ще більше застосунків та інтеграцій</strong></h3><p>Ми розглянули багато корисних застосунків та інтеграцій для локалізації. Вони можуть оптимізувати продуктивність вашої команди та допомогти з високоякісними перекладами.</p><p>Але це лише початок. Crowdin пропонує понад 600 застосунків та інтеграцій для вашого проєкту. Повний список можна знайти у <a href="https://store.crowdin.com/categories/all">Crowdin Store</a>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/crowdin-store-2.png" class="kg-image" alt="crowdin-store-2" width="600" height="400" loading="lazy"><figcaption>Crowdin Store.</figcaption></figure><p>Якщо ви натиснете на них, ви знайдете більше інформації про те, що вони роблять, як вони це роблять, і, можливо, навіть знайдете вихідний код, який реалізує функціональність.</p><p>Ви також можете сортувати їх за релевантністю, назвою або датою.</p><p>Інструменти, потрібні для покращення продуктивності та надання високоякісних перекладів вашим користувачам, лише за один клік від вас.</p><!--kg-card-begin: html--><h2 id="як-перекласти-вебсайт-на-crowdin">🔹 Як перекласти вебсайт на Crowdin</h2><!--kg-card-end: html--><p>Чудова робота! Ми дійшли до дуже важливої частини посібника: як перекласти вебсайт на Crowdin.</p><h3 id="-crowdin-5"><strong>Як перекласти вебсайт на Crowdin</strong></h3><p>Існує три основні підходи для перекладу вебсайту на Crowdin:</p><ul><li>інтеграції;</li><li>JS Proxy Translator;</li><li>Crowdin In-context.</li></ul><p>Оскільки для веброзробки існує багато технологій, фреймворків та бібліотек, а процес інтернаціоналізації дуже технологічно специфічний, рекомендовано проаналізувати всі доступні опції та знайти ту, яка найкраще підходить для вашого конкретного випадку.</p><h3 id="--71"><strong>Інтеграції</strong></h3><p>Світ веброзробки надзвичайно різноманітний. Ми можемо створювати та розміщувати вебсайти на різних сервісах і розробляти їх за допомогою різних інструментів.</p><p>Щоб підтримувати цю різноманітність інструментів і сервісів, Crowdin розробив багато інтеграцій з зовнішніми платформами для імпорту тексту та надсилання перекладів до системи керування контентом (CMS) на ваш вибір.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translate-website-1.png" class="kg-image" alt="translate-website-1" width="600" height="400" loading="lazy"><figcaption>Перекладайте вебсайт на Crowdin.</figcaption></figure><p>Наприклад, ви можете перекладати вебсайти з WordPress, Webflow, Joomla та інших схожих інструментів.</p><p><a href="https://crowdin.com/blog/2020/12/17/website-translation-with-crowdin">Crowdin</a> зазначає:</p><blockquote>З Crowdin ви не обмежені жодними конкретними сервісами для створення та розміщення вебсайтів.</blockquote><blockquote>Ми маємо не тільки 15 застосунків, включно з <a href="https://store.crowdin.com/wix-proxy-translator">Wix</a>, <a href="https://store.crowdin.com/ghost-org-proxy-translator">Ghost</a>, <a href="https://store.crowdin.com/squarespace-proxy-translator">Squarespace</a> та <a href="https://store.crowdin.com/webflow-proxy-translator">Webflow</a>, які забезпечують найкращий спосіб перекладу вебсайтів, але й окрему технологію <a href="https://store.crowdin.com/js-proxy-translator">JS Proxy</a>, яка допоможе з локалізацією будь-якого іншого вебсайту.</blockquote><p>Зокрема, ці технології:</p><ul><li>сканують вебсторінки;</li><li>виявляють матеріал, який можна перекласти (рядки);</li><li>витягують його у форматі, який можна локалізувати;</li><li>синхронізують переклади з оригіналом.</li></ul><p>Вам потрібно лише додати фрагмент JavaScript до свого коду, і ви будете готові почати перекладати.</p><p>Ось деякі застосунки, які ви можете встановити, щоб розпочати перекладати свій вебсайт на різних зовнішніх сервісах:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/apps-for-translation.png" class="kg-image" alt="apps-for-translation" width="600" height="400" loading="lazy"><figcaption>Список застосунків, які ви можете встановити, щоб <a href="https://crowdin.com/blog/2020/12/17/website-translation-with-crowdin">перекласти свій вебсайт</a>.</figcaption></figure><p>Якщо ваш репозиторій розміщено на GitHub або ви використовуєте GitHub Pages, ви також можете скористатися <a href="https://store.crowdin.com/github">інтеграцією GitHub</a> та <a href="https://store.crowdin.com/github-action">GitHub Crowdin Action</a> для автоматичної синхронізації файлів вашого вебсайту та перекладів.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/github-integrations.png" class="kg-image" alt="github-integrations" width="600" height="400" loading="lazy"><figcaption>Інтеграції GitHub.</figcaption></figure><h3 id="js-proxy-translator"><strong>JS Proxy Translator</strong></h3><p>Інтеграції дуже корисні, але Crowdin також має опцію, яка може допомогти з локалізацією будь-якого вебсайту, незалежно від сервісу, де він розміщений.</p><p>Цей підхід до локалізації вебсайтів на Crowdin називається <a href="https://store.crowdin.com/js-proxy-translator">JS Proxy Translator</a>.</p><p>Crowdin зазначає, що за допомогою цього проксі ви можете:</p><ul><li>синхронізувати оригінал та переклад;</li><li>локалізувати свій вебсайт з мінімальними зусиллями;</li><li>витягнути вихідний текст без будь-якого програмування;</li><li>перекласти метазаголовки та описи для SEO;</li><li>спланувати синхронізацію перекладів.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/js-proxy.png" class="kg-image" alt="js-proxy" width="600" height="400" loading="lazy"><figcaption>JS Proxy Translator.</figcaption></figure><p>Ось два офіційні знімки екрана, надані командою Crowdin, що показують кроки, необхідні для налаштування JS Proxy Translator.</p><p>Перший крок — імпортувати матеріал вебсайту. Вам потрібно лише ввести посилання на свій вебсайт та вказати, як ви хочете синхронізувати вихідні файли: вручну чи щоденно імпортувати їх автоматично.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-104.png" class="kg-image" alt="image-104" width="600" height="400" loading="lazy"><figcaption>JS Proxy Translator (частина 1). Зображення з <a href="https://store.crowdin.com/js-proxy-translator">документації Crowdin</a>.</figcaption></figure><p>Після того, як оригінал буде перекладено, ви можете опублікувати переклади на своєму вебсайті.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-105.png" class="kg-image" alt="image-105" width="600" height="400" loading="lazy"><figcaption>JS Proxy Translator (частина 2). Зображення з <a href="https://store.crowdin.com/js-proxy-translator">документації Crowdin</a>.</figcaption></figure><p>Команда Crowdin <a href="https://store.crowdin.com/js-proxy-translator">зазначає</a>, що:</p><blockquote>Перед тим, як синхронізувати вебсайт для перекладу, потрібно опублікувати весь його матеріал.</blockquote><p>Щоб дізнатися більше про те, як перекладати вебсайт за допомогою JS Proxy на Crowdin, перегляньте <a href="https://www.youtube.com/watch?v=q_0byyBDRGI">інструкцію</a> від команди Crowdin.</p><h3 id="in-context-for-web"><strong>In-Context for Web</strong></h3><p>Третій підхід до локалізації вебсайтів на Crowdin — переклад тексту безпосередньо на вебсайті або вебзастосунку за допомогою Crowdin In-Context.</p><p>Команда Crowdin <a href="https://store.crowdin.com/in-context">зазначає</a>, що:</p><blockquote>Інструмент Crowdin In-Context дозволяє перекладати матеріал безпосередньо у реальному вебзастосунку. Таким чином забезпечується найкраща якість перекладу.<br><br>Локалізація In-Context пов’язана з фактичним проєктом, створеним на Crowdin, у якому зберігаються файли для перекладу.<br><br>Цей інструмент робить так, що будь-який текст у вебзастосунку можна редагувати. Більше того, процес перекладу можна спостерігати в реальному часі. Таким чином можна перекладати навіть динамічну частину застосунку та рядки, які містять заповнювачі.</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/crowdin-in-context.png" class="kg-image" alt="crowdin-in-context" width="600" height="400" loading="lazy"><figcaption>Crowdin In-Context.</figcaption></figure><p>Ви можете побачити його в дії <a href="https://demo.crowdin.com">тут</a>:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/demo-website.png" class="kg-image" alt="demo-website" width="600" height="400" loading="lazy"><figcaption>Демо Crowdin In-Context.</figcaption></figure><p>Якщо ви увійдете у свій обліковий запис Crowdin, ви побачите це:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/demo-website-2.png" class="kg-image" alt="demo-website-2" width="600" height="400" loading="lazy"><figcaption>Демо Crowdin In-Context.</figcaption></figure><p>Ви зможете натиснути на всі рядки на вебсайті, щоб перекласти їх, а коли збережете переклади, вони будуть синхронізовані з проєктом на Crowdin.</p><p><strong><strong>💡 </strong>Важливо<strong>:</strong></strong> щоб дізнатись більше про Crowdin In-Context, перегляньте <a href="https://www.youtube.com/watch?v=ktfw7UsW3qw">інструкцію</a> від команди Crowdin.</p><p>Це три різні підходи для перекладу вебсайту на Crowdin. Ви можете зробити величезну різницю для своєї команди, зробивши правильний вибір.</p><p>Тепер ви знаєте більше про найважливіші функції Crowdin, тому заглибимось у переклад freeCodeCamp як реальний приклад глобального проєкту локалізації, який підтримується чудовою спільнотою волонтерів.</p><!--kg-card-begin: html--><h2 id="переклад-freecodecamp">🔹 Переклад freeCodeCamp</h2><!--kg-card-end: html--><p>🎉 Вітаємо з досягненням цієї частини посібника! Це доводить, що ви дуже зацікавлені в освоєнні цих навичок.</p><p>Ви вже знаєте, як перекладати свій проєкт на Crowdin, тому подивимося, як дивовижна спільнота freeCodeCamp перекладає матеріал багатьма мовами світу.</p><p>Ми розглянемо це з точки зору потенційного волонтера, наголошуючи на тому, як перекладати наш матеріал на Crowdin.</p><h3 id="-freecodecamp"><strong>Правила участі в freeCodeCamp</strong></h3><p>З чого варто почати, якщо ви волонтер, який зацікавлений в перекладі?</p><p>Для початку прочитайте наші <a href="https://contribute.freecodecamp.org/how-to-translate-files/">настанови щодо внеску</a>. Це набір статей, до яких ви завжди можете звернутися, якщо у вас є будь-які запитання щодо того, як приєднатися або почати перекладати/редагувати.</p><p>Тут ви знайдете:</p><ul><li>огляд Crowdin;</li><li>з чого почати;</li><li>як вибрати проєкт і файл;</li><li>як перекладати проєкти, доступні на Crowdin;</li><li>як редагувати переклади;</li><li>найкращі практики перекладу та багато іншого!</li></ul><p>У <a href="https://contribute.freecodecamp.org/#/how-to-translate-files">цій статті</a> ви знайдете інформацію про те, як підготувати себе до участі.</p><p>Ми рекомендуємо:</p><ul><li>прочитати <a href="https://www.freecodecamp.org/ukrainian/news/yak-dopomohty-z-perekladom-freecodecamp-na-ridnu-movu/">це оголошення</a>, написане Квінсі Ларсоном, засновником freeCodeCamp;</li><li>приєднатися до <a href="https://forum.freecodecamp.org/c/contributors/3">форуму спільноти</a>;</li><li>приєднатися до <a href="https://discord.com/invite/PRyKn3Vbay">нашого чату в Discord</a>.</li></ul><p>У нашій <a href="https://contribute.freecodecamp.org/how-to-translate-files/">документації</a> також зазначено, що робота з невеликою командою може бути дуже корисною для підтримки мотивації:</p><blockquote>Завдяки Crowdin та іншим інструментам перекладати легко, але це однаково передбачає багато роботи.<br><br>Ми хочемо, щоб ви насолоджувалися внеском, який робите, але не вигорали та не втрачали інтерес.<br><br>Невелика група з 4-5 осіб — це хороші умови для початку. Згодом ви зможете залучити до команди ще більше друзів.</blockquote><p>Зараз до нашого проєкту на Crowdin додано 30+ найпоширеніших мов світу.</p><p>Деякі з них вже доступні на вебсайті freeCodeCamp. Вам просто потрібно вибрати їх зі спадного меню, щоб автоматично побачити нову мову.</p><p>Якщо ви не бачите свою мову в списку, документація також зазначає, що:</p><blockquote>Якщо ви хочете, щоб ми зарахували нову мову, радимо залучити до цього своїх друзів.<br><br>Якщо у вас є невелика група людей (принаймні 4-5), зацікавлених і відданих справі, ми можемо зв’язатись через дзвінок. Ми пояснимо всі деталі та ознайомимо з деякими інструментами й процесами.</blockquote><p>Після того, як ви закінчите читати цю частину, ви можете почати робити свій внесок.</p><p>Спочатку розглянемо різні посади, доступні для волонтерів freeCodeCamp.</p><h3 id="-freecodecamp-1"><strong>Посади в процесі локалізації freeCodeCamp</strong></h3><p>Ви можете допомогти з локалізацією freeCodeCamp на посаді перекладача або редактора.</p><p>Перекладачі допомагають перекладати файли навчальної програми, документацію та елементи інтерфейсу користувача freeCodeCamp (серед яких кнопки та мітки).</p><p>Редактори стежать за тим, щоб переклади були послідовними, уніфікованими за тоном і не містили поширених помилок.</p><h3 id="--72"><strong>Мовні керівники</strong></h3><p>Наші мовні керівники з радістю зустрінуть вас:</p><ul><li><a href="https://www.freecodecamp.org/news/author/farhanhasin/">Фархан Хасін Чоудхурі</a> (<a href="https://twitter.com/frhnhsin">@frhnhsin</a>) очолює бенгальську спільноту;</li><li><a href="https://www.freecodecamp.org/chinese/news/author/miyaliu/">Мія Лю</a> (<a href="https://twitter.com/miyaliu666">@miyaliu666</a>) очолює китайську спільноту;</li><li><a href="https://www.freecodecamp.org/italian/news/author/dario/">Даріо Ді Чілло</a> (<a href="https://twitter.com/_dariodc">@_DarioDC</a>) очолює італійську спільноту;</li><li><a href="https://www.freecodecamp.org/japanese/news/author/yoko/">Йоко Мацуда</a> (<a href="https://twitter.com/_sidemt">@_sidemt</a>) очолює японську спільноту;</li><li><a href="https://www.freecodecamp.org/korean/news/author/alison-yoon/">Алісон Юн</a> (<a href="https://twitter.com/aliyooncreative">@aliyooncreative</a>) очолює корейську спільноту;</li><li><a href="https://www.freecodecamp.org/portuguese/news/author/daniel/">Даніель Роса</a> (<a href="https://twitter.com/Daniel__Rosa">@Daniel__Rosa</a>) очолює португальську спільноту;</li><li><a href="https://www.freecodecamp.org/portuguese/news/author/nielda/">Ніелда Карла Гонсалвес де Мело</a> (<a href="https://twitter.com/NieldaKarla">@NieldaKarla</a>) очолює португальський канал на YouTube;</li><li><a href="https://www.freecodecamp.org/espanol/news/author/rafael/">Рафаель Ернандес</a> (<a href="https://twitter.com/rafaeldavish">@RafaelDavisH</a>) очолює іспанську спільноту та загальний процес локалізації;</li><li><a href="https://www.freecodecamp.org/espanol/news/author/estefaniacn">Естефанія Кассінгена Навоне</a> (<a href="https://twitter.com/EstefaniaCassN">@EstefaniaCassN</a>) очолює іспанський канал на YouTube;</li><li><a href="https://www.freecodecamp.org/news/author/larymak/">Гілларі Ньякунді</a> (<a href="https://twitter.com/larymak1">@larymak1</a>) очолює спільноту суахілі;</li><li><a href="https://www.freecodecamp.org/ukrainian/news/author/anastasiia/">Анастасія Буєвич</a> (<a href="https://twitter.com/anisiangel?s=21&amp;t=3yJxu9lXXPDyxB6WYhRsWg">@anisiangel</a>) очолює українську спільноту;</li><li><a href="https://www.freecodecamp.org/news/author/zaira/">Зайра Хіра</a> (<a href="https://twitter.com/hira_zaira">@hira_zaira</a>) очолює спільноту урду.</li></ul><h3 id="freecodecamp-crowdin"><strong>freeCodeCamp на Crowdin</strong></h3><p>Як я вже згадувала, для перекладу ми використовуємо платформу Crowdin. Це платформа для керування локалізацією, де окремі особи, команди та організації можуть ефективно локалізувати свій матеріал.</p><p>Щоб перейти до проєктів freeCodeCamp на Crowdin:</p><p>Перейдіть до <a href="https://translate.freecodecamp.org/">translate.freecodecamp.org</a> і ви побачите інформаційну панель з проєктами, над якими ми зараз працюємо:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/freecodecamp.png" class="kg-image" alt="freecodecamp" width="600" height="400" loading="lazy"><figcaption>freeCodeCamp.org на Crowdin.</figcaption></figure><p>У нас є три основні проєкти:</p><ul><li><a href="https://translate.freecodecamp.org/curriculum">Coding Curriculum</a></li><li><a href="https://translate.freecodecamp.org/learn-ui">Learn User Interface</a></li><li><a href="https://translate.freecodecamp.org/contributing-docs">Contributing Documentation</a></li></ul><p>У нас є й інші проєкти на Crowdin, серед яких News UI, Other Courses та Subtitles (Chinese).</p><h3 id="--73"><strong>Як вибрати проєкт та мову</strong></h3><p>Опинившись на нашій платформі для перекладу, вам потрібно буде вибрати проєкт. Скажімо, ви обрали переклад навчальної програми.</p><p>Вам просто потрібно натиснути на проєкт:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/freecodecamp-dashboard-crowdin.png" class="kg-image" alt="freecodecamp-dashboard-crowdin" width="600" height="400" loading="lazy"><figcaption>Натисніть на проєкт, з яким хочете допомогти.</figcaption></figure><p>Після цього ви потрапите до списку мов, доступних для перекладу.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/project-in-crowdin.png" class="kg-image" alt="project-in-crowdin" width="600" height="400" loading="lazy"><figcaption>Список доступних мов для проєкту «Coding Curriculum».</figcaption></figure><p>Для кожної мови ви побачите:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2023/09/language.png" class="kg-image" alt="language" width="600" height="400" loading="lazy"></figure><ul><li>назву;</li><li>код;</li><li>рядок з двома можливими кольорами: блакитний колір означає прогрес перекладу, а зелений колір означає прогрес редагування;</li><li>ви також можете побачити їхні відповідні відсотки праворуч;</li><li>останнє число праворуч означає кількість слів, які потрібно перекласти.</li></ul><p>Праворуч ви знайдете інформаційну панель, яка містить:</p><ul><li>короткий опис проєкту;</li><li>вихідну мову (англійська);</li><li>кількість волонтерів;</li><li>кількість слів вихідною мовою;</li><li>дату створення проєкту та останню активність.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/project-in-crowdin.png" class="kg-image" alt="project-in-crowdin" width="600" height="400" loading="lazy"><figcaption>Перегляньте інформацію праворуч (сіра панель).</figcaption></figure><p>Час вибрати мову.</p><p>Якщо ви натиснете на мову, ви потрапите до структури проєкту з усіма файлами та папками, доступними для перекладу.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/spanish-modern-files-crowdin.png" class="kg-image" alt="spanish-modern-files-crowdin" width="600" height="400" loading="lazy"><figcaption>Структура проєкту «Coding Curriculum» для іспанської мови.</figcaption></figure><h4 id="--74"><strong>Як вибрати файл</strong></h4><p>Щоб перейти до редактора перекладу та почати перекладати, просто натисніть на назву файлу, який потребує перекладу.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/selecting-a-file.png" class="kg-image" alt="selecting-a-file" width="600" height="400" loading="lazy"><figcaption>Виберіть файл, який потрібно перекласти. Файл потребує перекладу, якщо рядок не повністю блакитний чи зелений.</figcaption></figure><p>Зверніть увагу, що ми зазвичай надаємо пріоритет перекладу перших трьох сертифікацій.</p><p>💡 <strong>Важливо<strong>:</strong></strong> якщо ви не увійшли до свого облікового запису Crowdin або досі не створили його, вам буде запропоновано зробити це, коли натиснете на файл.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/creating-an-account.png" class="kg-image" alt="creating-an-account" width="600" height="400" loading="lazy"><figcaption>Екран, де ви можете увійти до платформи перекладу freeCodeCamp. Ви також можете зареєструватися, щоб створити обліковий запис Crowdin.</figcaption></figure><p>Якщо ви реєструєтеся для нового облікового запису, вам потрібно буде ввести свою електронну пошту, вибрати ім’я користувача та пароль. Ви також отримаєте електронний лист від Crowdin, щоб підтвердити електронну адресу.</p><h3 id="--75"><strong>Редактор перекладу</strong></h3><p>Вітаємо! Тепер у вас є обліковий запис Crowdin, і ви можете почати перекладати вибраний файл.</p><p>Скажімо, ви натиснули на файл <code><strong><strong>build-a-drum-machine.md</strong></strong></code> і хочете перекласти його іспанською.</p><p>Ви побачите схожий знімок екрана:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/the-translator-ui.png" class="kg-image" alt="the-translator-ui" width="600" height="400" loading="lazy"><figcaption>Редактор перекладу. Це те, що ви побачите, коли натиснете на файл і увійдете до свого облікового запису Crowdin.</figcaption></figure><p>Якщо ви хочете дізнатися більше про роботу редактора, натисніть на <code>Next</code>, щоб побачити більше порад щодо інтерфейсу користувача. А якщо ви хочете закрити цю коротку інструкцію, просто натисніть на <code>X</code> у верхній частині.</p><p>Ось сім кроків короткої інструкції від Crowdin на випадок, якщо ви захочете зберегти їх:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/tutorial-step-2.png" class="kg-image" alt="tutorial-step-2" width="600" height="400" loading="lazy"><figcaption>Співпрацюйте в режимі реального часу.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/tutorial-step-3.png" class="kg-image" alt="tutorial-step-3" width="600" height="400" loading="lazy"><figcaption>Використовуйте контекст, щоб створювати відповідні переклади.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/tutorial-step-4.png" class="kg-image" alt="tutorial-step-4" width="600" height="400" loading="lazy"><figcaption>Переглядайте файли.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/tutorial-step-5.png" class="kg-image" alt="tutorial-step-5" width="600" height="400" loading="lazy"><figcaption>Перекладайте з будь-якого пристрою.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/tutorial-step-6.png" class="kg-image" alt="tutorial-step-6" width="600" height="400" loading="lazy"><figcaption>Переключайтеся на режим «Side-by-side», щоб швидше перевіряти переклади.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/tutorial-step-7.png" class="kg-image" alt="tutorial-step-7" width="600" height="400" loading="lazy"><figcaption>Це все, друзі! Це сьомий і останній крок інструкції.</figcaption></figure><p>Після останнього кроку натисніть на <code>Close</code>, і ви опинитеся в редакторі перекладу.</p><p>Це місце, де відбувається магія. Ви можете почати перекладати, зберігати свої переклади, використовувати запропоновані переклади та адаптувати їх, а також голосувати за запропоновані переклади або проти них.</p><p>Щоб перекласти рядок, просто натисніть на нього або збережіть свій поточний переклад, щоб перейти до наступного рядка.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translations-editor.png" class="kg-image" alt="translations-editor" width="600" height="400" loading="lazy"><figcaption>Редактор перекладу.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/translations-editor-copy.png" class="kg-image" alt="translations-editor-copy" width="600" height="400" loading="lazy"><figcaption>Ось тут можна писати та зберігати свій переклад..</figcaption></figure><p>💡 <strong>Важливо<strong>: </strong></strong>ви також можете писати коментарі та позначати їх як проблеми, щоб повідомити про це команду freeCodeCamp та інших волонтерів.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/comments-sample.png" class="kg-image" alt="comments-sample" width="600" height="400" loading="lazy"><figcaption>Для окремих рядків можна писати коментарі та позначати їх як проблеми.</figcaption></figure><h3 id="--76"><strong>Як перекладати інтерфейс навчальної програми</strong></h3><p>Ми також маємо конкретні рекомендації для перекладу інтерфейсу навчальної програми.</p><p>У нашій <a href="https://contribute.freecodecamp.org/#/how-to-translate-files?id=translate-the-learn-interface">документації</a> зазначається:</p><blockquote>Наш інтерфейс <code>/learn</code> спирається на файли JSON, завантажені в плагін i18n для створення перекладеного тексту. Ця робота розділена між Crowdin і GitHub. </blockquote><p>Ми перекладаємо файли <code>intro.json</code> та <code>translations.json</code> на Crowdin. Якщо ви плануєте перекладати рядки з цих файлів, будь ласка, майте на увазі, що інформація про контекст, надана Crowdin, може бути дуже корисною.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/image-68.png" class="kg-image" alt="image-68" width="600" height="400" loading="lazy"><figcaption>Приклад контексту, наданого Crowdin (<a href="https://contribute.freecodecamp.org/#/how-to-translate-files?id=on-crowdin">джерело</a>).</figcaption></figure><p>Є певні файли, які ми не можемо завантажити на Crowdin (серед них <code>links.json</code>, <code>meta-tags.json</code>, <code>motivation.json</code> та <code>trending.json</code>). Ці файли зазвичай підтримуються мовними керівниками, але якщо ви хочете допомогти з ними, будь ласка, зверніться до <a href="https://contribute.freecodecamp.org/language-lead-handbook/">цієї статті</a>.</p><h3 id="--77"><strong>Як перекладати документацію</strong></h3><p>Документація є ще одним важливим ресурсом для freeCodeCamp, оскільки так ми можемо ділитися важливою інформацією, кроками та рекомендаціями з потенційними волонтерами.</p><p>Ми маємо певні рекомендації щодо перекладу нашої документації. Їх можна знайти у <a href="https://contribute.freecodecamp.org/how-to-translate-files/#translate-documentation">цій статті</a>, де розповідається про те, як перекладати внутрішні посилання в перекладеній документації.</p><h3 id="--78"><strong>Найкращі практики</strong></h3><p>Для будь-якого проєкту важливо дотримуватись найкращих практик. Ось деякі з <a href="https://contribute.freecodecamp.org/how-to-translate-files/#translation-best-practices">найкращих практик</a>, яких варто дотримуватися під час перекладу freeCodeCamp:</p><ul><li>не перекладайте вміст тегів <code>&lt;code&gt;</code>. Ці теги позначають текст, який знаходиться в коді та повинен бути англійською мовою;</li><li>не додавайте додаткового вмісту. Якщо вам здається, що завдання потребує змін в тексті або додаткової інформації, запропонуйте це через GitHub, що змінить англійський файл;</li><li>не змінюйте порядок вмісту.</li></ul><h3 id="--79"><strong>Як стати редактором</strong></h3><p>Якщо ви допомагатимете freeCodeCamp з локалізацією, ви також <a href="https://contribute.freecodecamp.org/how-to-proofread-files/#becoming-a-proofreader">можете стати редактором</a>.</p><p>Ми зазвичай надаємо доступ до редагування, якщо ви вже деякий час допомагали з локалізацією freeCodeCamp.</p><p>Якщо ви хочете стати редактором, будь ласка, зверніться до нас у <a href="https://discord.gg/PRyKn3Vbay">чаті</a>.</p><p>💡 <strong>Важливо<strong>: </strong></strong>редактори можуть затверджувати власні переклади. Однак ми радимо, щоб це робив хтось інший, щоб переконатися, що відсутні помилки.</p><h3 id="--80"><strong>Як редагувати переклади</strong></h3><p>Коли ви станете редактором, ви матимете спеціальні дозволи в редакторі перекладу. Ви зможете переглядати наявні переклади, редагувати і затверджувати їх.</p><p>Під час прийняття рішення ви повинні враховувати оцінки спільноти, визначені голосами «за» та «проти».</p><p>Коли ви затвердили рядок, то автоматизований процес, який ми налаштували за допомогою <a href="https://contribute.freecodecamp.org/how-to-proofread-files/#proofread-translations">інтеграції GitHub</a> на Crowdin, додасть його до нашої платформи:</p><blockquote>Затвердження рядка в режимі редагування позначить його як завершений, і цей рядок буде завантажений під час наступного завантаження з Crowdin на GitHub.</blockquote><h3 id="-discord"><strong>Чат для перекладачів на Discord</strong></h3><p>Якщо у вас є якісь запитання або ви хочете допомогти з перекладом, ви можете приєднатися до нашого <a href="https://discord.com/invite/PRyKn3Vbay">чату для перекладачів на Discord</a>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/09/discord-chat-room.png" class="kg-image" alt="discord-chat-room" width="600" height="400" loading="lazy"><figcaption>Наш чат на Discord.</figcaption></figure><p>Після створення облікового запису та приєднання до серверу ви побачите привітальне повідомлення і канал з локалізації <code>#start-here</code>.</p><p>Чудова робота! Тепер ви готові почати перекладати та зробити власний внесок у локалізацію freeCodeCamp.</p><h2 id="--81"><strong>Висновок</strong></h2><p>Вітання! Ми розглянули багато тем, пов’язаних із локалізацією, і тепер ви знаєте більше про те, як локалізувати матеріали та платформи, щоб зацікавити користувачів у всьому світі.</p><p>Деякі ключові висновки:</p><ul><li>у глобалізованому світі, де інформація доступна всього в декілька натискань, локалізація продуктів, послуг і платформ є важливою, якщо ваша мета — зацікавити користувачів у всьому світі. Адаптація до різних культур відкриє двері для вашої команди, організації та користувачів у всьому світі;</li><li>Crowdin — це потужна платформа для управління локалізацією, зосереджена на наданні вам та вашій команді інструментів, необхідних для локалізації продуктів і платформ, які постійно розвиваються;</li><li>локалізація freeCodeCamp є прикладом глобальної спільноти, об’єднаної спільною метою: забезпечити безоплатний доступ до освіти у всьому світі без мовних бар’єрів. Ви також можете приєднатися.</li></ul><p>Сподіваюся, вам сподобався цей посібник про основи локалізації. Тепер ви готові почати локалізувати свою платформу. Зараз саме час почати. Локалізація може бути саме тим, що вам потрібно для досягнення глобальної спільноти користувачів.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Типи зображень: розширення .jpeg, .svg та .png ]]>
                </title>
                <description>
                    <![CDATA[ Під час роботи зі зображеннями важливо розуміти різні типи файлів. Який формат найкраще підходить для певної програми? У цьому посібнику ми пояснимо найпоширеніші типи зображень і в яких випадках їх потрібно використовувати. Зауважте, що це коротка нетехнічна стаття. Якщо ви хочете дізнатися більше про покращення продуктивності, див. посібники з оптимізації ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/typy-zobrazhen-rozshyrennya-jpeg-svg-ta-png/</link>
                <guid isPermaLink="false">669675c211086e03fcfcdb69</guid>
                
                    <category>
                        <![CDATA[ стиснення зображень ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Anastasiia Buievych ]]>
                </dc:creator>
                <pubDate>Tue, 16 Jul 2024 18:35:26 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2024/07/timon-klauser-3MAmj1ZKSZA-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/image-file-types-picture-format-extensions-jpeg-gif-png-svg-tiff/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Image File Types – The .jpeg, .svg, and .png Picture Format Extensions Explained</a>
      </p><p>Під час роботи зі зображеннями важливо розуміти різні типи файлів. Який формат найкраще підходить для певної програми?</p><p>У цьому посібнику ми пояснимо найпоширеніші типи зображень і в яких випадках їх потрібно використовувати.</p><p>Зауважте, що це коротка нетехнічна стаття. Якщо ви хочете дізнатися більше про покращення продуктивності, див. <a href="https://www.freecodecamp.org/news/tag/image-optimization/">посібники з оптимізації зображень вебсайту</a> (англійською мовою).</p><p>Спочатку швидко розглянемо, як працює стиснення зображень.</p><h2 id="-"><strong>Безвтратне та втратне стиснення: яка між ними різниця?</strong></h2><p>Безвтратне стиснення — це клас алгоритмів стиснення даних, які дозволяють ідеально відновити початкові дані зі стиснених даних.</p><p>Існує лише обмежена можливість стиснення файлу, перед тим як ви почнете викидати <em>частину</em> інформації, яку містить цей файл.</p><p>Тут з’являється втратне стиснення. «Втратне», оскільки воно втрачає частину інформації.</p><p>Втратне стиснення дозволяє відновити тільки приблизні дані початкових даних (хоча зазвичай зі значно покращеними рівнями стиснення).</p><p>Нижче ви будете бачити терміни «безвтратний» і «втратний», коли ми описуватимемо різні формати зображень.</p><h2 id="-jpeg-jpg-jpeg-"><strong>Що таке формат JPEG? (розширення .jpg та .jpeg)</strong></h2><p>JPEG — найпоширеніший тип файлу для зображень. Він найкраще підходить для фотографій та інших зображень з багатьма кольорами.</p><p>До речі, JPEG означає «Joint Photographic Experts Group» (об’єднана група експертів у галузі фотографії) — команду, яка розробила цей стандарт.</p><p>Файли JPEG менші за інші типи файлів, тому їх легко завантажувати та обмінюватися ними.</p><h3 id="-jpeg-"><strong>Чи можуть JPEG бути прозорими або мати прозорий фон?</strong></h3><p>Ні. На відміну від GIF, SVG та PNG, JPEG не можуть мати прозорого фону. Для цього його потрібно перетворити в інший формат файлу.</p><h3 id="-jpeg-jpg-"><strong>.jpeg та .jpg — одне і те ж?</strong></h3><p>Так. Єдина різниця в тому, що традиційно розширення файлів складаються з трьох символів. <code>.jpg</code> — це скорочена форма <code>.jpeg</code>.</p><h2 id="-png-png-png-"><strong>Що таке PNG? Формат PNG (розширення .png)</strong></h2><p>PNG — це формат безвтратного стиснення для цифрових зображень. PNG був створений як удосконалена заміна GIF. Він став найпоширенішим форматом безвтратного стиснення зображень у мережі.</p><p>PNG — це тип файлу, який найкраще використовувати для зображень з прозорістю (наприклад, для логотипів). Файли PNG зазвичай більші за JPEG, тому вони не ідеальні для великих зображень.</p><p>PNG можуть мати прозорий фон.</p><h2 id="-gif-gif-gif-"><strong>Що таке GIF? Формат GIF (розширення .gif)</strong></h2><p>Формат GIF — це ще один тип зображення, який часто використовується в інтернеті. Файли GIF зазвичай менші за інші типи зображень, що робить їх ідеальними для використання в мережі.</p><p>GIF можна використовувати для статичних зображень. Проте частіше їх асоціюють з анімаціями — серією зображень, які автоматично відтворюються. Наприклад, ось GIF суспільного надбання:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/04/Globespin.gif" class="kg-image" alt="Globespin" width="600" height="400" loading="lazy"><figcaption>Гіфка суспільного надбання з Землею, яка обертається</figcaption></figure><p>Це всього лише серія зображень, які відтворюються без перестанку.</p><p>Зверніть увагу, що GIF також можуть мати прозорий фон.</p><h3 id="-gif"><strong>Як вимовляти GIF?</strong></h3><p>Засновник формату GIF — Стів Вілхіте — сказав, що він каже «джіф» як у назві арахісової пасти «Jif».</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/04/6398248857_42ff8de345_h-1.jpeg" class="kg-image" alt="6398248857_42ff8de345_h-1" width="600" height="400" loading="lazy"><figcaption>Арахісова паста Jif. Creative Commons, автор: Brian Cantoni.</figcaption></figure><p>Проте майже всі англомовні розробники, яких я знаю, кажуть «гіф», і я вважаю, що це буде найпопулярнішою вимовою й надалі.</p><figure class="kg-card kg-embed-card kg-card-hascaption"><iframe id="twitter-widget-0" scrolling="no" frameborder="0" allowtransparency="true" allowfullscreen="true" class="" title="X Post" src="https://platform.twitter.com/embed/Tweet.html?creatorScreenName=ossia&amp;dnt=false&amp;embedId=twitter-widget-0&amp;features=eyJ0ZndfdGltZWxpbmVfbGlzdCI6eyJidWNrZXQiOltdLCJ2ZXJzaW9uIjpudWxsfSwidGZ3X2ZvbGxvd2VyX2NvdW50X3N1bnNldCI6eyJidWNrZXQiOnRydWUsInZlcnNpb24iOm51bGx9LCJ0ZndfdHdlZXRfZWRpdF9iYWNrZW5kIjp7ImJ1Y2tldCI6Im9uIiwidmVyc2lvbiI6bnVsbH0sInRmd19yZWZzcmNfc2Vzc2lvbiI6eyJidWNrZXQiOiJvbiIsInZlcnNpb24iOm51bGx9LCJ0ZndfZm9zbnJfc29mdF9pbnRlcnZlbnRpb25zX2VuYWJsZWQiOnsiYnVja2V0Ijoib24iLCJ2ZXJzaW9uIjpudWxsfSwidGZ3X21peGVkX21lZGlhXzE1ODk3Ijp7ImJ1Y2tldCI6InRyZWF0bWVudCIsInZlcnNpb24iOm51bGx9LCJ0ZndfZXhwZXJpbWVudHNfY29va2llX2V4cGlyYXRpb24iOnsiYnVja2V0IjoxMjA5NjAwLCJ2ZXJzaW9uIjpudWxsfSwidGZ3X3Nob3dfYmlyZHdhdGNoX3Bpdm90c19lbmFibGVkIjp7ImJ1Y2tldCI6Im9uIiwidmVyc2lvbiI6bnVsbH0sInRmd19kdXBsaWNhdGVfc2NyaWJlc190b19zZXR0aW5ncyI6eyJidWNrZXQiOiJvbiIsInZlcnNpb24iOm51bGx9LCJ0ZndfdXNlX3Byb2ZpbGVfaW1hZ2Vfc2hhcGVfZW5hYmxlZCI6eyJidWNrZXQiOiJvbiIsInZlcnNpb24iOm51bGx9LCJ0ZndfdmlkZW9faGxzX2R5bmFtaWNfbWFuaWZlc3RzXzE1MDgyIjp7ImJ1Y2tldCI6InRydWVfYml0cmF0ZSIsInZlcnNpb24iOm51bGx9LCJ0ZndfbGVnYWN5X3RpbWVsaW5lX3N1bnNldCI6eyJidWNrZXQiOnRydWUsInZlcnNpb24iOm51bGx9LCJ0ZndfdHdlZXRfZWRpdF9mcm9udGVuZCI6eyJidWNrZXQiOiJvbiIsInZlcnNpb24iOm51bGx9fQ%3D%3D&amp;frame=false&amp;hideCard=false&amp;hideThread=false&amp;id=1011823951167750144&amp;lang=en&amp;origin=https%3A%2F%2Fwww.freecodecamp.org%2Fnews%2Fimage-file-types-picture-format-extensions-jpeg-gif-png-svg-tiff%2F&amp;sessionId=5d7f71ed694dc1d338a32299bc25b1de48ec727c&amp;siteScreenName=freecodecamp&amp;theme=light&amp;widgetsVersion=2615f7e52b7e0%3A1702314776716&amp;width=550px" data-tweet-id="1011823951167750144" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variant-alternates: inherit; font-variant-ligatures: inherit; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-feature-settings: inherit; font-optical-sizing: inherit; font-variation-settings: inherit; font-size: 22px; vertical-align: middle; position: static; visibility: visible; width: 551px; height: 339px; display: block; flex-grow: 1;" loading="lazy"></iframe><figcaption>Опитування шоу «The Tonight Show», де 73,7% з 5 767 респондентів відповіли, що вимовляють GIF як «гіф».</figcaption></figure><h2 id="-tiff-tiff-tif-"><strong>Що таке TIFF? Формат TIFF (розширення .tif)</strong></h2><p>TIFF — це тип файлу, який найкраще використовувати для високоякісних зображень, які потребують редагування. Файли TIFF великі, тому вони не підходять для обміну в інтернеті.</p><p>Використовуйте TIFF, якщо якість важливіша за розмір файлу. На практиці, особливо при роботі зі зображеннями в інтернеті, найкращий варіант — це PNG.</p><h2 id="-svg-svg-svg-"><strong>Що таке SVG? Формат SVG (розширення .svg)</strong></h2><p>SVG — це Scalable Vector Graphic (масштабована векторна графіка). Це означає, що графіка може масштабуватися до будь-якого розміру без втрати якості.</p><p>На відміну від усіх інших форматів, які ми вже обговорили, файли SVG є векторними (JPEG, PNG, GIF та TIFF є растровими файлами).</p><p>Це означає, що файли SVG можна масштабувати до будь-якого розміру без втрати якості, а растрові файли втрачатимуть якість.</p><p>Файли SVG можна редагувати за допомогою програмного забезпечення для векторного редагування (або просто вручну оновлювати координати та кольори графіки). Їх можна редагувати лише за допомогою програмного забезпечення для растрового редагування.</p><p>Ось приклад файлу SVG з <a href="https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Getting_Started">Mozilla Developer Network</a>. Так виглядає SVG у формі коду XML:</p><pre><code class="language-xml">&lt;svg version="1.1"
     width="300" height="200"
     xmlns="http://www.w3.org/2000/svg"&gt;

  &lt;rect width="100%" height="100%" fill="red" /&gt;

  &lt;circle cx="150" cy="100" r="80" fill="green" /&gt;

  &lt;text x="150" y="125" font-size="60" text-anchor="middle" fill="white"&gt;SVG&lt;/text&gt;

&lt;/svg&gt;</code></pre><p>Цей простий код відтворює таке зображення:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/04/example-svg-file.png" class="kg-image" alt="example-svg-file" width="600" height="400" loading="lazy"><figcaption>Червоний прямокутник із зеленою крапкою та білими літерами SVG.</figcaption></figure><p>Зазвичай файли SVG менші за файли PNG, оскільки містять лише дані, необхідні для відтворення зображення, а файли PNG містять дані для всього зображення.</p><p>Файли SVG також можна анімувати за допомогою інструменту під назвою SMIL. Тобто вони можуть служити як просторові файли GIF. А якщо ви дійсно відважні, то можете програмувати SVG.</p><h2 id="jpeg-vs-png-"><strong>JPEG vs PNG: що краще для мережі?</strong></h2><p>У майбутньому мережа може виглядати по-іншому, оскільки ми вводимо все більше оптоволоконних кабелів, а високошвидкісний інтернет через супутник стає більш поширеним.</p><p>Наразі я рекомендую використовувати JPEG для більшості зображень.</p><p>Якщо у вас є логотип компанії або дуже важлива фотографія, де важлива якість, найкращий варіант — PNG.</p><p>Для логотипів я рекомендую використовувати SVG, оскільки це розширення безмежно масштабується і має дуже компактний розмір.</p><h2 id="--1"><strong>Сподіваюся, ви багато чого дізналися про типи зображень.</strong></h2><p>І сподіваюся, це було корисно. Якщо ви хочете дізнатися більше про програмування і технології, спробуйте <a href="https://www.freecodecamp.org/ukrainian/learn/">основну навчальну програму freeCodeCamp</a>. Вона безоплатна.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Властивості CSS: пояснення max-width, min-width, max-height та min-height з прикладами ]]>
                </title>
                <description>
                    <![CDATA[ Якщо ви створюєте вебсайт, важливо зробити його адаптивним. Деколи важко зробити так, щоб вебсайт мав хороший вигляд на екранах різного розміру. Вам доведеться керувати шириною або висотою елементів, а також вказувати різні розміри за допомогою медіазапитів, що не завжди просто. Хоча відносні одиниці (наприклад, відсотки) можуть бути корисними в деяких ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/vlastyvosti-css-poyasnennya-max-width-min-width-max-height-ta-min-height-z-prykladamy/</link>
                <guid isPermaLink="false">66857a3fcfd96d04031a3b63</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Anastasiia Buievych ]]>
                </dc:creator>
                <pubDate>Sat, 06 Jul 2024 03:20:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2024/07/pexels-scott-webb-1544944.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/css-properties-examples/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">CSS Properties – Max-width, Min-width, Max-height, and Min-height Explained with Examples</a>
      </p><p>Якщо ви створюєте вебсайт, важливо зробити його адаптивним.</p><p>Деколи важко зробити так, щоб вебсайт мав хороший вигляд на екранах різного розміру. Вам доведеться керувати шириною або висотою елементів, а також вказувати різні розміри за допомогою медіазапитів, що не завжди просто.</p><p>Хоча відносні одиниці (наприклад, відсотки) можуть бути корисними в деяких випадках, вони можуть призвести до проблем.</p><p>Але не хвилюйтесь: такі властивості, як max-width та min-width, прийдуть вам на допомогу. Ці властивості дозволяють уникнути використання медіазапитів для деяких адаптивних завдань.</p><p>У цій статті ви дізнаєтеся, що таке max-width, min-width, max-height і min-height та як їх використовувати.</p><h2 id="-max-width"><strong>Властивість max-width</strong></h2><p>Властивість max-width дозволяє вказати максимальну ширину елемента. Це означає, що елемент може збільшуватися в ширину до досягнення певної <a href="https://www.freecodecamp.org/ukrainian/news/vlastyvosti-css-poyasnennya-max-width-min-width-max-height-ta-min-height-z-prykladamy/www.freecodecamp.org/ukrainian/news/odynytsi-css-em-rem-vh-vw-ta-inshi/">абсолютної або відносної одиниці</a>, після чого його ширина має фіксуватися.</p><p>Ось про що я говорю:</p><p>Припустимо, що ми встановили ширину елемента на <strong>80%</strong> ширини вікна перегляду. Якщо ширина вікна перегляду становить <strong>375px</strong>, то елемент матиме ширину <strong>300px</strong>, що є доволі хорошим показником.</p><p>(80/100) * 375 = 300px</p><p>Але якщо у нас ширше вікно перегляду, наприклад, <strong>1300px</strong>, тоді наш елемент матиме ширину <strong>1040px</strong>.</p><p>(80/100) * 1300 = 1040px</p><p>Саме тут допоможе властивість max-width. Якщо ви використовуєте відносні одиниці (наприклад, відсотки), то встановлена властивість max-width дозволить елементу продовжувати збільшуватися в ширину, поки він не досягне вказаного значення.</p><p>Ось приклад:</p><figure class="kg-card kg-embed-card"><iframe id="cp_embed_mdmeEOV" src="https://codepen.io/D_kingnelson/embed/preview/mdmeEOV?default-tabs=css%2Cresult&amp;height=300&amp;host=https%3A%2F%2Fcodepen.io&amp;slug-hash=mdmeEOV" title="max-width-example" scrolling="no" frameborder="0" height="300" allowtransparency="true" class="cp_embed_iframe" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variant-alternates: inherit; font-variant-ligatures: inherit; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-feature-settings: inherit; font-optical-sizing: inherit; font-variation-settings: inherit; font-size: 22px; vertical-align: middle; width: 720px; overflow: hidden;"></iframe></figure><p>Зверніть увагу, що розмір картки ніколи не перевищує <strong>350px</strong>. Так працює max-width. Це дозволяє картці рости на менших екранах.</p><p>Якщо ширина менша за 350px, вона займає 80% від поточного розміру екрана. Але як тільки ширина досягає 350px, вона фіксується і не перевищує встановлену ширину.</p><p>Ось так виглядає код:</p><pre><code>//Картка не може бути більшою за 350px

.card{
  margin:0 auto;
  padding:1.5em;
  width:80%;
  max-width:350px;
  height:50%;
  background: #FFFFFF;
  box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.3);
  border-radius:4px;
  overflow:hidden;
}
</code></pre><h2 id="-min-width"><strong>Властивість min-width</strong></h2><p>На відміну від властивості max-width, властивість min-width вказує мінімальну ширину. Вона визначає найменшу можливу ширину для елемента.</p><p>У деяких випадках потрібно, щоб елемент мав гнучку ширину, тому її задають у відносній одиниці (наприклад, у відсотках). Але коли екран зменшується, ширина елемента також зменшується.</p><p>Тут допоможе min-width: ви можете встановити мінімальну ширину, щоб картка не була меншою за вказане значення.</p><figure class="kg-card kg-embed-card"><iframe id="cp_embed_zYwdzxW" src="https://codepen.io/D_kingnelson/embed/preview/zYwdzxW?default-tabs=css%2Cresult&amp;height=300&amp;host=https%3A%2F%2Fcodepen.io&amp;slug-hash=zYwdzxW" title="min-width-example" scrolling="no" frameborder="0" height="300" allowtransparency="true" class="cp_embed_iframe" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variant-alternates: inherit; font-variant-ligatures: inherit; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-feature-settings: inherit; font-optical-sizing: inherit; font-variation-settings: inherit; font-size: 22px; vertical-align: middle; width: 720px; overflow: hidden;"></iframe></figure><pre><code>//Картка не може бути меншою за 250px

.card{
  margin:0 auto;
  padding:1.5em;
  width:80%;
  max-width:350px;
  //тут налаштовуємо властивість min-width
  min-width : 250px;
  height:50%;
  background: #FFFFFF;
  box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.3);
  border-radius:4px;
  overflow:hidden;
}
</code></pre><h2 id="-max-height"><strong>Властивість max-height</strong></h2><p>Властивість max-height працює так само, як і max-width, але впливає на висоту, а не ширину.</p><p>Ось приклад:</p><figure class="kg-card kg-embed-card"><iframe id="cp_embed_gOWxRrb" src="https://codepen.io/D_kingnelson/embed/preview/gOWxRrb?default-tabs=css%2Cresult&amp;height=300&amp;host=https%3A%2F%2Fcodepen.io&amp;slug-hash=gOWxRrb" title="max-height-example" scrolling="no" frameborder="0" height="300" allowtransparency="true" class="cp_embed_iframe" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variant-alternates: inherit; font-variant-ligatures: inherit; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-feature-settings: inherit; font-optical-sizing: inherit; font-variation-settings: inherit; font-size: 22px; vertical-align: middle; width: 720px; overflow: hidden;"></iframe></figure><pre><code>//Встановлює висоту елемента до вказаної одиниці, ефективно зупиняючи його збільшення у висоті

.card{
  margin:0 auto;
  padding:1.5em;
  width:80%;
  max-width:350px;
  height:70%;
  //тут налаштовуємо властивість max-height
  max-height: 400px;
  background: #FFFFFF;
  box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.3);
  border-radius:4px;
  overflow:hidden;
}
</code></pre><h2 id="-min-height"><strong>Властивість min-height</strong></h2><p>На відміну від max-height, властивість min-height задає мінімальну висоту для елемента.</p><p>Це трапляється, коли вікно перегляду зменшується, а висота елемента не може бути меншою певної висоти.</p><figure class="kg-card kg-embed-card"><iframe id="cp_embed_yLboXVz" src="https://codepen.io/D_kingnelson/embed/preview/yLboXVz?default-tabs=css%2Cresult&amp;height=300&amp;host=https%3A%2F%2Fcodepen.io&amp;slug-hash=yLboXVz" title="min-height" scrolling="no" frameborder="0" height="300" allowtransparency="true" class="cp_embed_iframe" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variant-alternates: inherit; font-variant-ligatures: inherit; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-feature-settings: inherit; font-optical-sizing: inherit; font-variation-settings: inherit; font-size: 22px; vertical-align: middle; width: 720px; overflow: hidden;"></iframe></figure><pre><code>.element{
    height:40vh;
    min-height:200px;
}
</code></pre><h2 id="-"><strong>Висновок</strong></h2><p>Адаптивність є важливим фактором у веброзробці. Відстежувати вигляд елементів на екранах різних розмірів може бути складно, але властивості max-width, min-width, max-height і min-height допомагають з цим.</p><p>Ці властивості дозволяють регулювати розмір елементів без необхідності використання медіазапитів.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Одиниці CSS: em, rem, vh, vw та інші ]]>
                </title>
                <description>
                    <![CDATA[ Багато властивостей у CSS (наприклад, width, margin, padding та font-size) використовують довжину, а CSS має багато різних способів для її вираження. Довжина в CSS — це число та одиниця без пробілу. Наприклад, 5px, 0.9em і так далі. Існує два загальних типи одиниць, які використовують для довжини і розміру в CSS: ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/odynytsi-css-em-rem-vh-vw-ta-inshi/</link>
                <guid isPermaLink="false">66858243cfd96d04031a3c2d</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Anastasiia Buievych ]]>
                </dc:creator>
                <pubDate>Thu, 04 Jul 2024 07:47:21 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2024/07/5f9c9cd8740569d1a4ca347f.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/css-unit-guide/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">CSS Unit Guide: CSS em, rem, vh, vw, and more, Explained</a>
      </p><p>Багато властивостей у CSS (наприклад, <code>width</code>, <code>margin</code>, <code>padding</code> та <code>font-size</code>) використовують довжину, а CSS має багато різних способів для її вираження.</p><p>Довжина в CSS — це число та одиниця без пробілу. Наприклад, <code>5px</code>, <code>0.9em</code> і так далі.</p><p>Існує два загальних типи одиниць, які використовують для довжини і розміру в CSS: абсолютні та відносні.</p><h2 id="-"><strong>Абсолютні одиниці довжини</strong></h2><p>Абсолютні одиниці довжини базуються на фактичній фізичній одиниці та зазвичай однакового розміру на всіх пристроях. Однак залежно від розміру та якості вашого екрана або налаштувань у вашому браузері чи ОС можуть бути деякі винятки.</p><p>Ось декілька поширених абсолютних одиниць довжини в CSS:</p><h3 id="px"><strong><code>px</code></strong></h3><p>Пікселі, або <code>px</code>, є одними з найпоширеніших одиниць довжини в CSS.</p><p>У CSS 1 піксель <a href="https://drafts.csswg.org/css-values/#reference-pixel">офіційно визначено</a> як 1/96 дюйма. Усі інші абсолютні одиниці довжини базуються на цьому визначенні пікселя.</p><p>Але коли цей стандарт був сформульований, більшість моніторів мали роздільну здатність 1024 x 768 та DPI (кількість точок на дюйм) 96.</p><p>Екрани на сучасних пристроях мають набагато вищу роздільну здатність і DPI, тому лінія довжиною 96 пікселів може не вимірювати точно 1 дюйм, залежно від пристрою.</p><p>Незважаючи на те, що розміри в пікселях можуть змінюватися на різних пристроях, загалом вважається, що для екранів краще використовувати пікселі.</p><p>Якщо ви знаєте, що ваша сторінка буде надрукована на високоякісному принтері, тоді можна розглянути можливість використання іншої одиниці: наприклад, <code>cm</code> або <code>mm</code>.</p><p><a href="https://www.smashingmagazine.com/2021/07/css-absolute-units/">У цій статті</a> ви можете дізнатися більше про історію пікселів та чому CSS-дюйм не завжди відповідає фізичному дюйму (англійською мовою).</p><h3 id="cm"><strong><code>cm</code></strong></h3><p>Сантиметри.</p><p>У CSS <code>1cm</code> приблизно дорівнює 37,8 пікселя або близько 25,2/64 дюйма.</p><h3 id="mm"><strong><code>mm</code></strong></h3><p>Міліметри.</p><p>У CSS <code>1mm</code> приблизно дорівнює 3,78 пікселя або 1/10 сантиметра.</p><h3 id="in"><strong><code>in</code></strong></h3><p>Дюйми.</p><p>У CSS <code>1in</code> приблизно дорівнює 96 пікселів або близько 2,54 см.</p><h3 id="pt"><strong><code>pt</code></strong></h3><p>Пункти.</p><p>У CSS <code>1pt</code> приблизно дорівнює 1,3333 пікселя або 1/72 дюйма.</p><h3 id="pc"><strong><code>pc</code></strong></h3><p>Піки.</p><p>У CSS <code>1pc</code> приблизно дорівнює 16 пікселів або 1/6 дюйма.</p><h2 id="--1"><strong>Відносні одиниці довжини</strong></h2><p>Відносні одиниці довжини залежать від розміру або налаштувань іншого елемента. Наприклад, відносний розмір шрифту елемента може розраховуватися з використанням розміру шрифту батьківського елемента.</p><p>Ось декілька поширених відносних одиниць довжини:</p><h3 id="em"><strong><code>em</code></strong></h3><p>Одиниця <code>em</code> у CSS отримала свою назву від типографічної одиниці. У типографії термін em спочатку стосувався ширини великої літери M у використовуваному шрифті та розмірі.</p><p>Коли використовується із властивістю <code>font-size</code>, <code>em</code> успадковує розмір шрифту від батьківського елемента:</p><pre><code class="language-css">.container {
  font-size: 16px;
}

.container p {
  font-size: 1em;
}

.container h2 {
  font-size: 3em;
}

.container h3 {
  font-size: 2em;
}
</code></pre><p>У цьому прикладі розмір шрифту елемента <code>p</code> становить <code>16px</code> (16 * 1). Тим часом розмір шрифту <code>h2</code> становить <code>48px</code> (16 * 3), а для <code>h3</code> — <code>32px</code> (16 * 2).</p><p>Якщо <code>em</code> використовується з іншою властивістю (наприклад, <code>width</code>), то <code>em</code> розраховується з використанням розміру цільового елемента.</p><h3 id="rem"><strong><code>rem</code></strong></h3><p>Ця відносна одиниця не залежить від розміру або налаштувань батьківського елемента, а базується на корені документа. Для вебсайтів коренем документа є елемент <code>html</code>.</p><pre><code class="language-css">p {
  font-size: 1.25rem;
}
</code></pre><p>У більшості браузерів розмір шрифту за замовчуванням становить 16, тому розмір шрифту елементів <code>html</code> становить <code>16px</code>. Отже, у цьому випадку елемент <code>p</code> дорівнює <code>20px</code> (16 * 1,25).</p><p>Але якщо користувач змінить розмір шрифту за замовчуванням у своєму браузері, то розмір шрифту елемента <code>p</code> буде масштабуватися відповідно.</p><h3 id="--2"><strong><code>%</code></strong></h3><p>Відсотки, або розмір відносно розміру батьківського елемента:</p><pre><code class="language-css">div {
  width: 400px;
}

div p {
  width: 75%;
}</code></pre><p>Оскільки ширина батьківського елемента становить <code>400px</code>, то шириною внутрішнього абзацу буде <code>300px</code> (400 * 0,75).</p><h3 id="vw"><strong><code>vw</code></strong></h3><p><code>1vw</code> — це 1% ширини вікна перегляду.</p><p>Наприклад:</p><pre><code class="language-css">body {
  width: 100vw;
}
</code></pre><p>Оскільки елемент <code>body</code> має значення <code>100vw</code>, або 100% ширини вікна перегляду, він займатиме всю доступну ширину. Отже, якщо ви зміните розмір вашого браузера на 690 пікселів у ширину, то <code>body</code> займе всі 690 пікселів у ширину.</p><h3 id="vh"><strong><code>vh</code></strong></h3><p><code>1vh</code> — це 1% висоти вікна перегляду.</p><p>Наприклад:</p><pre><code class="language-css">div {
  height: 50vh;
}
</code></pre><p>Елемент <code>div</code> займе 50% висоти вікна перегляду. Отже, якщо висота вікна браузера становить 900 пікселів, висота <code>div</code> дорівнюватиме 450 пікселів.</p><h3 id="ex"><strong><code>ex</code></strong></h3><p>Одиниця <code>ex</code> у CSS отримала свою назву від x-height у типографії, або «висоти літери x у шрифті». У багатьох шрифтах символ малої літери x зазвичай становить приблизно половину висоти найбільшого символу.</p><p>У CSS <code>1ex</code> — це x-height шрифту або половина <code>1em</code>.</p><p>Але оскільки розмір малої літери x може значно відрізнятися залежно від шрифту, одиниця <code>ex</code> використовується рідко.</p><h3 id="ch"><strong><code>ch</code></strong></h3><p>Одиниця <code>ch</code> у CSS визначається як ширина символу 0 (нуль, або U+0030) шрифту.</p><p>Хоча одиниця <code>ch</code> працює як точне вимірювання для моноширинних/фіксованих шрифтів (наприклад, Courier), вона може бути непередбачуваною з пропорційними шрифтами (наприклад, Arial).</p><p>Наприклад, якщо ви використали шрифт Courier і встановили ширину елемента на <code>60ch</code>, то ширина цього елемента дорівнюватиме рівно 60 символам.</p><p>Але якщо ви використали шрифт Arial і встановили ширину елемента на <code>60ch</code>, то неможливо сказати, якою буде ширина елемента: символи можуть переповнювати контейнер або не досягати його меж.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/02/ch-unit-monospaced-and-proportional-fonts.png" class="kg-image" alt="Зображення, яке показує 20ch як точне вимірювання у Courier, але неточне в Helvetica та Georgia." width="600" height="400" loading="lazy"><figcaption><a href="https://meyerweb.com/eric/thoughts/2018/06/28/what-is-the-css-ch-unit/">Джерело</a></figcaption></figure><p>Щоб дізнатись більше про одиницю <code>ch</code> та розглянути пару прикладів, див. <a href="https://meyerweb.com/eric/thoughts/2018/06/28/what-is-the-css-ch-unit/">цю статтю</a> (англійською мовою).</p><h3 id="vmin-vmax"><strong><code>vmin</code> та <code>vmax</code></strong></h3><p>Одиниці <code>vmin</code> та <code>vmax</code> базуються на значеннях <code>vw</code> та <code>vh</code>.</p><p><code>1vmin</code> — це 1% найменшого виміру вікна перегляду, а <code>1vmax</code> — це 1% найбільшого виміру вікна перегляду.</p><p>Наприклад, уявіть вікно браузера, ширина якого 1200 пікселів, а висота — 600 пікселів. У цьому випадку <code>1vmin</code> дорівнює <code>6px</code> (1% від <code>vh</code>, що менше для розміру 600 пікселів). Тим часом <code>1vmax</code> дорівнює <code>12px</code> (1% від <code>vh</code>, що більше для розміру 1200 пікселів).</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Інструкція break в Python: як завершити цикл for у Python ]]>
                </title>
                <description>
                    <![CDATA[ У Python можна використовувати цикли, щоб повторно виконувати логіку коду до виконання певної умови. Python надає вбудовані керуючі інструкції, які дозволяють змінювати поведінку циклу. До деяких з них належать continue, break, pass та else. У цій статті ви дізнаєтесь, як завершити поточний цикл або змінити інструкцію за допомогою інструкції break. ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/instruktsiya-break-v-python-yak-zavershyty-tsykl-for-u-python/</link>
                <guid isPermaLink="false">667e7fe269ce140433c2ff7a</guid>
                
                    <category>
                        <![CDATA[ python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Anastasiia Buievych ]]>
                </dc:creator>
                <pubDate>Wed, 03 Jul 2024 03:28:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2024/07/1e00a0a8acc5c22dea9a4910bffecbb1.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/python-break-statement-tutorial/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Python Break Statement – How to Break Out of a For Loop in Python</a>
      </p><p>У Python можна використовувати цикли, щоб повторно виконувати логіку коду до виконання певної умови.</p><p>Python надає вбудовані керуючі інструкції, які дозволяють змінювати поведінку циклу. До деяких з них належать <code>continue</code>, <code>break</code>, <code>pass</code> та <code>else</code>.</p><p>У цій статті ви дізнаєтесь, як завершити поточний цикл або змінити інструкцію за допомогою інструкції <code>break</code>.</p><h2 id="-break-for-python"><strong>Як використовувати інструкцію <code>break</code> в циклі <code>for</code> у Python</strong></h2><p>Розглянемо список Python нижче:</p><pre><code class="language-python">імена = ["Оксана", "Андрій", "Мирослава", "Богдан"]
</code></pre><p>Цикл <code>for</code> можна використати, щоб ітерувати над списком <code>імена</code> та надрукувати його елементи:</p><pre><code class="language-python">імена = ["Оксана", "Андрій", "Мирослава", "Богдан"]

for i in імена:
    print(i)
# Оксана
# Андрій
# Мирослава
# Богдан
</code></pre><p>Але що робити, якщо ви хочете зупинити цикл, коли знайдете певне ім’я користувача? Це можна зробити за допомогою інструкції <code>break</code>.</p><p>Ось приклад:</p><pre><code class="language-python">імена = ["Оксана", "Андрій", "Мирослава", "Богдан"]

for i in імена:
    print(i)
    if i == "Андрій":
        break
# Оксана
# Андрій
</code></pre><p>У коді вище ми створили інструкцію <code>if</code>, яка перевіряє, чи поточним значенням <code>i</code> є <code>"Андрій"</code>: <code>if i == "Андрій"</code>.</p><p>У тілі інструкції <code>if</code> ми використали інструкцію <code>break</code>. Таким чином цикл зупиниться, коли знайде елемент у списку зі значенням <code>"Андрій"</code>.</p><p>Тому замість того, щоб вивести весь список (<code>"Оксана", "Андрій", "Мирослава", "Богдан"</code>), було виведено лише <code>"Оксана"</code> та <code>"Андрій"</code>, оскільки цикл зупинився одразу після знаходження <code>"Андрій"</code>.</p><h2 id="-break-while-python"><strong>Як використовувати інструкцію <code>break</code> в циклі <code>while</code> у Python</strong></h2><p>Цикл <code>while</code> можна завершити за допомогою інструкції <code>break</code>:</p><pre><code class="language-python">імена = ["Оксана", "Андрій", "Мирослава", "Богдан"]

i = 0
while i &lt; len(імена):
    print(імена[i])
    if імена[i] == "Андрій":
        break
    i += 1
</code></pre><p>Так само як і в прикладі з циклом <code>for</code>, ми створили список <code>імена</code> з чотирьох елементів: <code>["Оксана", "Андрій", "Мирослава", "Богдан"]</code>.</p><p>Використовуючи інструкцію <code>if</code> у циклі <code>while</code>, ми перевіряли, коли поточний цикл був на індексі зі значенням <code>"Андрій"</code>. Коли це відбувалося, цикл завершувався.</p><p>Знову ж таки, було виведено <code>"Оксана"</code> та <code>"Андрій"</code>, оскільки цикл зупинився, коли знайшов <code>"Андрій"</code>.</p><h2 id="-"><strong>Висновок</strong></h2><p>У цій статті ви дізналися, як використовувати інструкцію <code>break</code> у Python. Її також можна використовувати, щоб завершити поточний цикл, коли умова виконана.</p><p>З наведених прикладів ви дізналися, як використовувати інструкцію <code>break</code>, щоб завершити цикли <code>for</code> та <code>while</code> у Python.</p><p>Щасливого програмування!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Метод round(): як округлити число з плаваючою комою в Pandas ]]>
                </title>
                <description>
                    <![CDATA[ Бібліотеку Pandas можна використовувати в Python, щоб маніпулювати та аналізувати дані. У більшості випадків її використовують для маніпулювання та аналізу табличних даних. У цій статті ви дізнаєтеся, як використовувати метод round() від Pandas для округлення значення з плаваючою комою до певної кількості десяткових знаків. Ми почнемо з розгляду синтаксису методу, ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/metod-round-yak-okruhlyty-chyslo-z-plavayuchoyu-komoyu-v-pandas/</link>
                <guid isPermaLink="false">667e674869ce140433c2fe8f</guid>
                
                    <category>
                        <![CDATA[ python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Anastasiia Buievych ]]>
                </dc:creator>
                <pubDate>Mon, 01 Jul 2024 03:16:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2024/06/round-float-in-pandas.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/how-to-round-a-float-in-pandas/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Pandas round() Method – How To Round a Float in Pandas</a>
      </p><p>Бібліотеку Pandas можна використовувати в Python, щоб маніпулювати та аналізувати дані. У більшості випадків її використовують для маніпулювання та аналізу табличних даних.</p><p>У цій статті ви дізнаєтеся, як використовувати метод <code>round()</code> від Pandas для округлення значення з плаваючою комою до певної кількості десяткових знаків.</p><p>Ми почнемо з розгляду синтаксису методу, а потім розглянемо декілька практичних прикладів коду.</p><h2 id="-round-pandas"><strong>Приклад методу <code>round()</code> від Pandas</strong></h2><p>Ось так виглядає синтаксис методу <code>round()</code>:</p><pre><code class="language-txt">DataFrame.round(decimals)</code></pre><p>Параметр <strong>decimals</strong> представляє кількість десяткових знаків, до яких потрібно округлити число.</p><p>Кількість десяткових знаків, які потрібно повернути, передається як параметр. Виклик <code>round(2)</code> поверне число, округлене до двох десяткових знаків.</p><p>Ось приклад:</p><pre><code class="language-python">import pandas as pd

data = {'вартість':[20.5550, 21.03535, 19.67373, 18.233233]}
  
df = pd.DataFrame(data)

df['округлена_вартість'] = df['вартість'].round(2)
print(df)</code></pre><p>У наведеному вище коді у нас є список чисел, які потрапляють у стовпець <code>вартість</code>. У стовпці були такі значення: [20.5550, 21.03535, 19.67373, 18.233233].</p><p>Використовуючи метод <code>round()</code>, ми округлили значення до 2 десяткових знаків: <code>df['вартість'].round(2)</code>.</p><p>Повернені значення були збережені у стовпці під назвою <code>округлена_вартість</code>.</p><p>Ось вихідні дані коду:</p><!--kg-card-begin: html--><table>
  <tbody><tr>
    <th></th>
    <th scope="col">Вартість</th>
    <th scope="col">Округлена_вартість</th>
  </tr>

  <tr>
    <td>0</td>
    <td>20.555000</td>
    <td>20.56</td>
  </tr>

  <tr>
    <td>1</td>
    <td>21.035350</td>
    <td>21.04</td>
  </tr>
  
  <tr>
    <td>2</td>
    <td>19.673730</td>
    <td>19.67</td>
  </tr>
    
  <tr>
    <td>3</td>
    <td>18.233233</td>
    <td>18.23</td>
  </tr>
</tbody></table><!--kg-card-end: html--><p>З наведеної вище таблиці можна побачити, що значення у стовпці <code>вартість</code> були округлені до 2 десяткових знаків у стовпці <code>округлена_вартість</code>.</p><h2 id="-"><strong>Висновок</strong></h2><p>У цій статті ми дізналися про округлення значень з плаваючою комою за допомогою Pandas, використовуючи метод <code>round()</code>.</p><p>Ми почали з розгляду синтаксису методу <code>round()</code>, а потім побачили приклад використання методу для округлення значень з плаваючою комою до заданої кількості десяткових знаків.</p><p>Щасливого програмування!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Найбільше число в Python: який максимальний розмір цілого числа? ]]>
                </title>
                <description>
                    <![CDATA[ Максимальний розмір цілого числа в Python можна перевірити за допомогою властивості maxsize модуля sys. У цій статті ви дізнаєтеся про максимальний розмір цілого числа в Python. Також ви побачите різницю між Python 2 і Python 3. Вас не має турбувати максимальне значення цілого числа. У поточній версії Python тип даних ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/naybilshe-chyslo-v-python-yakyy-maksymalnyy-rozmir-tsiloho-chysla/</link>
                <guid isPermaLink="false">667e758a69ce140433c2ff1b</guid>
                
                    <category>
                        <![CDATA[ python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Anastasiia Buievych ]]>
                </dc:creator>
                <pubDate>Fri, 28 Jun 2024 08:56:58 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2024/06/thomas-t-OPpCbAAKWv8-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/maximum-integer-size-in-python/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Int Max in Python – Maximum Integer Size</a>
      </p><p>Максимальний розмір цілого числа в Python можна перевірити за допомогою властивості <code>maxsize</code> модуля <code>sys</code>.</p><p>У цій статті ви дізнаєтеся про максимальний розмір цілого числа в Python. Також ви побачите різницю між Python 2 і Python 3.</p><p>Вас не має турбувати максимальне значення цілого числа. У поточній версії Python тип даних <code>int</code> надає можливість зберігати дуже великі цілочисельні значення.</p><h2 id="-python"><strong>Який максимальний розмір цілого числа в</strong> <strong>Python?</strong></h2><p>У Python 2 ви можете перевірити максимальний розмір цілого числа за допомогою властивості <code>maxint</code> модуля <code>sys</code>.</p><p>Ось приклад:</p><pre><code class="language-python">import sys

print(sys.maxint)
# 9223372036854775807</code></pre><p>У Python 2 є вбудований тип даних <code>long</code>, який зберігає цілочисельні значення більші, ніж може обробити <code>int</code>.</p><p>Те ж саме можна зробити в Python 3 за допомогою <code>maxsize</code>:</p><pre><code class="language-python">import sys

print(sys.maxsize)
# 9223372036854775807</code></pre><p>Зверніть увагу, що значення в коді вище не є максимальною місткістю типу даних <code>int</code> у поточній версії Python.</p><p>Якщо ви помножите це число (9223372036854775807) на дуже велике число в Python 2, буде повернено <code>long</code>.</p><p>З іншого боку, Python 3 може обробити цю операцію:</p><pre><code class="language-python">import sys

print(sys.maxsize * 7809356576809509573609874689576897365487536545894358723468)
# 72028601076372765770200707816364342373431783018070841859646251155447849538676</code></pre><p>Ви можете виконувати операції з великими цілочисельними значеннями в Python, не турбуючись про досягнення максимального значення.</p><p>Єдине обмеження для використання цих великих значень — це доступна пам’ять у системах, де вони використовуються.</p><h2 id="-"><strong>Висновок</strong></h2><p>У цій статті ви дізналися про максимальний розмір цілого числа в Python. Ви також побачили деякі приклади коду, які показали максимальний розмір цілого числа в Python 2 і Python 3.</p><p>З сучасним Python вам не потрібно турбуватися про досягнення максимального розміру цілого числа. Просто переконайтеся, що у вас достатньо пам’яті для обробки обчислень з дуже великими цілочисельними операціями, і все буде добре.</p><p>Щасливого програмування!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Різниця між псевдокласами та псевдоелементами в CSS ]]>
                </title>
                <description>
                    <![CDATA[ Псевдокласи та псевдоелементи в CSS — це два типи ключових слів, які можна поєднувати з селекторами. Їх використовують, щоб визначити стан елемента або конкретні частини елемента. У цій статті ми дізнаємось про різницю між ними, а також їхню історію та найкращі практики використання. Синтаксис  * одинарна двокрапка : стосується ]]>
                </description>
                <link>https://www.freecodecamp.org/ukrainian/news/riznytsya-mizh-psevdoklasamy-ta-psevdoelementamy-v-css/</link>
                <guid isPermaLink="false">667d15b269ce140433c2fd4c</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Anastasiia Buievych ]]>
                </dc:creator>
                <pubDate>Thu, 27 Jun 2024 09:42:28 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/ukrainian/news/content/images/2024/06/pseudo-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Оригінальна публікація:</strong> <a href="https://www.freecodecamp.org/news/the-difference-between-pseudo-classes-and-elements-in-css/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">The Difference Between Pseudo-Classes and Pseudo-Elements in CSS</a>
      </p><p>Псевдокласи та псевдоелементи в CSS — це два типи ключових слів, які можна поєднувати з селекторами. Їх використовують, щоб визначити стан елемента або конкретні частини елемента.</p><p>У цій статті ми дізнаємось про різницю між ними, а також їхню історію та найкращі практики використання.</p><h6 id="-"><strong>Синтаксис</strong></h6><ul><li>одинарна двокрапка <code>:</code> стосується псевдокласів</li><li>подвійна двокрапка <code>::</code> стосується псевдоелементів</li></ul><h2 id="--1"><strong>Псевдокласи та псевдоелементи</strong></h2><p>«<a href="https://goroh.pp.ua/Етимологія/псевдо-">Псевдо</a>» означає «несправжній, неправильний, фальшивий». Префікс <code>псевдо-</code> використовують, щоб позначити класи або елементи, які не є «реальними», тобто є не елементами DOM (Document Object Model), а віртуальними елементами, створеними для стилізації.</p><p>Щоб краще визначити різницю, давайте детальніше обговоримо відмінності між псевдокласами та псевдоелементами.</p><h3 id="-css"><strong>Що таке псевдокласи в CSS?</strong></h3><p>Псевдокласи (<code>:</code>) в основному використовують, щоб стилізувати елементи у різних станах. Стан позначає умову або поведінку користувача (наприклад, hover, active, focus або disabled). Стан зазвичай включає взаємодію з користувачем.</p><p>Наприклад, ми можемо задати всім посиланням колір тексту <code>lavender</code>, коли користувач наводить курсор на посилання.</p><pre><code class="language-css">a:hover {
  color: lavender;
}
</code></pre><p>У Chrome DevTools ви знайдете інші приклади станів. Тут ви також можете тестувати та налагоджувати застосовані стилі на основі стану (і відповідного псевдокласу), перемикаючи їх.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2023/04/Screenshot-2023-04-20-at-10.13.42-AM.png" class="kg-image" alt="Screenshot-2023-04-20-at-10.13.42-AM" width="600" height="400" loading="lazy"></figure><p>Існує понад <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes#alphabetical_index">50 типів псевдокласів</a>, тому я дуже рекомендую переглянути їх.</p><p>Протестуйте код нижче, уважно розгляньте псевдокласи та спробуйте додати новий.</p><figure class="kg-card kg-embed-card"><iframe id="cp_embed_xxyRWYm" src="https://codepen.io/nataliepina/embed/preview/xxyRWYm?default-tabs=css%2Cresult&amp;height=300&amp;host=https%3A%2F%2Fcodepen.io&amp;slug-hash=xxyRWYm" title="Button States with Psuedo-Classes" scrolling="no" frameborder="0" height="300" allowtransparency="true" class="cp_embed_iframe" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variant-alternates: inherit; font-variant-ligatures: inherit; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-feature-settings: inherit; font-optical-sizing: inherit; font-variation-settings: inherit; font-size: 22px; vertical-align: middle; width: 720px; overflow: hidden;"></iframe></figure><h4 id="--2"><strong>Функціональні псевдокласи</strong></h4><p>Інший тип псевдокласів — це функціональні псевдокласи. Вони приймають параметр у вигляді <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Selector_list#selector_list">списку селекторів</a>, щоб відповідати елементам.</p><p>На відміну від інших типів псевдокласів, які орієнтовані на статичні стани (наприклад, hover), ці псевдокласи можуть динамічно цілитись на події та взаємодії з користувачем.</p><figure class="kg-card kg-code-card"><pre><code class="language-css">:is()
/* Псевдоклас, який відповідає будь-якому елементу, що відповідає будь-якому з селекторів у наданому списку. */

:not()
/* Псевдоклас заперечення, який представляє будь-який елемент, що не відповідає його аргументу. */

:where()
/* Псевдоклас налаштування специфічності, який відповідає будь-якому елементу, що відповідає будь-якому з селекторів у списку без додавання ваги специфічності. */

:has()
/* Псевдоклас відносності, який представляє елемент, якщо будь-який з відносних селекторів відповідає при закріпленні до прикріпленого елемента. */</code></pre><figcaption><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes#functional_pseudo-classes">джерело</a></figcaption></figure><h3 id="-css-1"><strong>Що таке псевдоелементи в CSS?</strong></h3><p>Псевдоелементи (<code>::</code>) використовують, щоб стилізувати певні частини елемента. Їх можуть використовувати, щоб націлитись на першу літеру чи перший рядок або щоб додати вміст перед чи після елемента.</p><p>Варто ознайомитися з цим <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements#alphabetical_index">індексом псевдоелементів</a>, щоб дізнатися більше про доступні ключові слова.</p><p>Наприклад, щоб перша літера абзацу була великою, можна використати псевдоелемент <code>first-letter</code>:</p><pre><code class="language-css">p::first-letter {
  font-size: 9em;
}</code></pre><p>Ще один поширений приклад псевдоелемента — це використання <code>::before</code> або <code>::after</code>, щоб додати вміст перед або після цільового елемента.</p><p>Протестуйте код нижче, щоб побачити, як можна використовувати <code>::before</code> та <code>::after</code>, щоб створити рядки перед або після текстового елемента.</p><figure class="kg-card kg-embed-card"><iframe id="cp_embed_qBJqpgq" src="https://codepen.io/nataliepina/embed/preview/qBJqpgq?default-tabs=css%2Cresult&amp;height=300&amp;host=https%3A%2F%2Fcodepen.io&amp;slug-hash=qBJqpgq" title="Psuedo-elements  - ::before &amp; ::after" scrolling="no" frameborder="0" height="300" allowtransparency="true" class="cp_embed_iframe" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variant-alternates: inherit; font-variant-ligatures: inherit; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-feature-settings: inherit; font-optical-sizing: inherit; font-variation-settings: inherit; font-size: 22px; vertical-align: middle; width: 720px; overflow: hidden;"></iframe></figure><h2 id="-css-2"><strong>Різниця між <code>:</code> та <code>::</code> в CSS</strong></h2><p>Запам’ятайте, що між одинарною та подвійною двокрапкою ключова різниця. Найголовніше, що <code>:</code> стосується псевдокласів, а <code>::</code> стосується псевдоелементів.</p><h3 id="--3"><strong>Історія <code>::</code></strong></h3><p>Історично існувала лише одинарна двокрапка <code>:</code>, яка визначала і псевдокласи, і псевдоелементи. Нотація <code>::</code> була введена в CSS3, щоб розрізняти їх.</p><p>Псевдоелементи та псевдокласи — це пов’язані поняття, які забезпечують різні способи стилізації елемента. Як наслідок, невелика відмінність у синтаксисі між ними є логічною.</p><p>Нерекомендовано використовувати лише одинарну двокрапку для обох випадків, оскільки це застаріло. Браузери досі приймають <code>:</code> для обох випадків для зворотної сумісності. Оскільки ви можете стикнутися з обома синтаксисами, розуміння історичного контексту є корисним.</p><h2 id="--4"><strong>Найкращі практики використання <code>:</code> та <code>::</code></strong></h2><p>Найкраща практика при виборі синтаксису двокрапки — дотримуватись поточних стандартів CSS3. Дотримання цих стандартів покращить підтримуваність коду, тому у своїй кодовій базі корисно зберігати та впроваджувати правила щодо цього.</p><p>Це також допоможе захистити CSS у майбутньому. Як ми обговорювали, браузери наразі приймають одинарний синтаксис для обох, але так може бути не завжди. Використовуючи подвійний синтаксис для псевдоелементів, ви можете допомогти запобігти помилкам у майбутньому, оскільки CSS продовжує змінюватися та розвиватися.</p><p>Розрізнення синтаксису між ними покращує читабельність. Це прояснює, на що ви цілитесь, і корисно при роботі зі складними селекторами, які включають декілька псевдоелементів і псевдокласів.</p><h2 id="--5"><strong>Висновок</strong></h2><p>Для написання підтримуваного CSS важливо розуміти різницю між псевдокласом і псевдоелементом. Псевдокласи використовують, щоб націлитись на стан, а псевдоелементи — щоб націлитись на конкретні частини елемента.</p><p>Сподіваюся, ця стаття допомогла зрозуміти різницю між псевдокласами та псевдоелементами, а також їхню історію та найкращі практики використання.</p><p>Щасливої стилізації!</p><p>Якщо хочете дізнатись більше про CSS, можете знайти мене у <a href="https://twitter.com/ui_natalie">твіттері</a>.</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
