From 960a3a8be265cfd6e8aa778e764ba0c0562c5fb2 Mon Sep 17 00:00:00 2001 From: "Node.js Crowdin Bot" <148437438+nodejs-crowdin@users.noreply.github.com> Date: Thu, 22 Aug 2024 05:58:37 +0200 Subject: [PATCH] [automated]: crowdin sync - enables Ukrainian (#6993) * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: synced translations from crowdin [skip ci] * chore: automated format of translated files Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * feat(i18n): enables ukrainian --------- Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: nodejs-crowdin Co-authored-by: Brian Muenzenmeyer --- apps/site/i18n/config.json | 2 +- apps/site/i18n/locales/uk.json | 320 ++++++++++++++++++ .../uk/about/get-involved/collab-summit.md | 16 +- .../pages/uk/about/get-involved/contribute.md | 52 +-- .../site/pages/uk/about/get-involved/index.md | 2 +- apps/site/pages/uk/about/governance.md | 14 +- apps/site/pages/uk/about/index.mdx | 62 ++++ .../pages/uk/about/security-reporting.mdx | 34 +- 8 files changed, 442 insertions(+), 60 deletions(-) create mode 100644 apps/site/i18n/locales/uk.json create mode 100644 apps/site/pages/uk/about/index.mdx diff --git a/apps/site/i18n/config.json b/apps/site/i18n/config.json index a34c595344c83..bf68c630eab7f 100644 --- a/apps/site/i18n/config.json +++ b/apps/site/i18n/config.json @@ -266,7 +266,7 @@ "langDir": "ltr", "dateFormat": "DD.MM.YYYY", "hrefLang": "uk", - "enabled": false, + "enabled": true, "default": false }, { diff --git a/apps/site/i18n/locales/uk.json b/apps/site/i18n/locales/uk.json new file mode 100644 index 0000000000000..1802e748e8b67 --- /dev/null +++ b/apps/site/i18n/locales/uk.json @@ -0,0 +1,320 @@ +{ + "components": { + "containers": { + "footer": { + "links": { + "trademarkPolicy": "Політика торгових марок", + "privacyPolicy": "Політика конфіденційності", + "codeOfConduct": "Кодекс поведінки", + "security": "Політика безпеки" + } + }, + "navBar": { + "links": { + "about": "Про Node.js", + "download": "Завантажити", + "docs": "Документація", + "guides": "Посібники", + "learn": "Навчання", + "security": "Безпека", + "certification": "Сертифікація", + "blog": "Блог" + } + } + }, + "navigation": { + "learn": { + "gettingStarted": { + "links": { + "gettingStarted": "Початок роботи", + "introductionToNodejs": "Вступ до Node.js", + "howToInstallNodejs": "Як установити Node.js", + "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "Як добре треба знати JavaScript, щоб використовувати Node.js?", + "differencesBetweenNodejsAndTheBrowser": "Різниця між Node.js і браузером", + "theV8JavascriptEngine": "Рушій JavaScript V8", + "anIntroductionToTheNpmPackageManager": "Вступ до менеджера пакетів npm", + "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) і новіші версії", + "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Різниця між клієнтським та розробницьким середовищем у Node.js", + "nodejsWithTypescript": "Node.js із TypeScript", + "nodejsWithWebassembly": "Node.js із WebAssembly", + "debugging": "Налагодження Node.js", + "profiling": "Профілювання застосунків Node.js", + "securityBestPractices": "Найкращі практики безпеки" + } + }, + "asynchronousWork": { + "links": { + "asynchronousWork": "Асинхронна робота", + "asynchronousFlowControl": "Асинхронне управління потоком", + "overviewOfBlockingVsNonBlocking": "Огляд блокувальних і неблокувальних викликів", + "javascriptAsynchronousProgrammingAndCallbacks": "Асинхронне програмування і функції зворотного виклику в JavaScript", + "discoverJavascriptTimers": "Таймери JavaScript", + "eventLoopTimersAndNexttick": "Цикл подій у Node.js", + "theNodejsEventEmitter": "Емітер подій у Node.js", + "understandingProcessnexttick": "Розуміння process.nextTick()", + "understandingSetimmediate": "Розуміння setImmediate()", + "dontBlockTheEventLoop": "Уникайте блокування циклу подій" + } + }, + "manipulatingFiles": { + "links": { + "manipulatingFiles": "Робота з файлами", + "nodejsFileStats": "Властивості файлу в Node.js", + "nodejsFilePaths": "Шляхи файлу в Node.js", + "workingWithFileDescriptorsInNodejs": "Робота з файловими дескрипторами в Node.js", + "readingFilesWithNodejs": "Читання файлів із Node.js", + "writingFilesWithNodejs": "Запис у файл із Node.js", + "workingWithFoldersInNodejs": "Робота з директоріями з Node.js", + "workingWithDifferentFilesystems": "Робота з різними файловими системами" + } + }, + "commandLine": { + "links": { + "commandLine": "Командний рядок", + "runNodejsScriptsFromTheCommandLine": "Запуск скриптів Node.js із командного рядка", + "howToReadEnvironmentVariablesFromNodejs": "Отримання доступу до змінних середовища в Node.js", + "howToUseTheNodejsRepl": "Як використовувати REPL у Node.js", + "outputToTheCommandLineUsingNodejs": "Вивід у командний рядок із Node.js", + "acceptInputFromTheCommandLineInNodejs": "Зчитування вводу з командного рядка з Node.js" + } + }, + "modules": { + "links": { + "modules": "Модулі", + "publishingNodeApiModules": "Як опублікувати пакет Node-API", + "anatomyOfAnHttpTransaction": "Анатомія HTTP-транзакції", + "abiStability": "Стабільність ABI", + "backpressuringInStreams": "Зворотний тиск у потоках" + } + }, + "diagnostics": { + "links": { + "diagnostics": "Діагностика", + "userJourney": "Шлях користувача", + "memory": "Пам’ять", + "liveDebugging": "Налагодження в реальному часі", + "poorPerformance": "Низька продуктивність", + "flameGraphs": "Flame-графіки" + } + }, + "testRunner": { + "links": { + "testRunner": "Виконавець тестів", + "introduction": "Що таке виконавець тестів у Node.js?", + "usingTestRunner": "Використання виконавця тестів у Node.js" + } + } + }, + "about": { + "links": { + "about": "Про Node.js", + "aboutSide": "Про Node.js®", + "branding": "Брендинг Node.js", + "governance": "Управління проєктом", + "releases": "Релізи Node.js", + "security": "Звітність про безпеку" + } + }, + "getInvolved": { + "links": { + "getInvolved": "Долучитися", + "collabSummit": "Саміт співпраці", + "upcomingEvents": "Майбутні події", + "contribute": "Внесок у Node.js", + "codeOfConduct": "Кодекс поведінки" + } + } + }, + "downloadList": { + "links": { + "previousReleases": "Релізи Node.js", + "packageManager": "Установка Node.js через менеджер пакетів", + "shaSums": { + "title": "Підписані SHASUMS для файлів релізу", + "howToVerify": " (Як перевірити)" + }, + "allDownloads": "Усі варіанти завантажень", + "nightlyReleases": "Нічні збірки", + "unofficialBuilds": "Неофіційні збірки", + "buildingFromSource": "Збірка Node.js із вихідного коду на підтримуваних платформах", + "installingOnLinux": "Установка Node.js через бінарний архів", + "installingOnWsl": "Установка на підсистемі Windows для Linux (WSL)" + } + }, + "downloadReleasesTable": { + "changelog": "Список змін", + "releases": "Релізи", + "docs": "Документація" + }, + "pagination": { + "next": "Далі", + "previous": "Назад" + }, + "common": { + "breadcrumbs": { + "navigateToHome": "До головної" + }, + "crossLink": { + "previous": "Назад", + "next": "Далі" + }, + "codebox": { + "copy": "Скопіювати", + "copied": "Скопійовано!" + }, + "pagination": { + "prev": "Назад", + "prevAriaLabel": "Попередня сторінка", + "next": "Далі", + "nextAriaLabel": "Наступна сторінка", + "defaultLabel": "Нумерація сторінок", + "pageLabel": "Перейти до {pageNumber} сторінки" + }, + "sidebar": { + "title": "Змінити сторінку" + }, + "languageDropdown": { + "label": "Обрати мову" + }, + "themeToggle": { + "label": "Перемкнути темний режим" + } + }, + "mdx": { + "upcomingEvents": { + "defaultTitle": "Немає майбутніх подій" + } + }, + "metabar": { + "lastUpdated": "Востаннє оновлено", + "readingTime": "Час на читання", + "addedIn": "Додано", + "author": "Автор", + "authors": "Автори", + "contribute": "Долучитися", + "contributeText": "Редагувати цю сторінку", + "viewAs": "Переглянути як", + "tableOfContents": "Зміст" + }, + "downloads": { + "changelogModal": { + "startContributing": "Долучитися" + } + }, + "search": { + "searchBox": { + "placeholder": "Пошук..." + }, + "seeAll": { + "text": "Переглянути всі {count} результатів" + }, + "searchError": { + "text": "Виникла помилка під час пошуку. Спробуйте пізніше." + }, + "poweredBy": { + "text": "За підтримки" + }, + "noResults": { + "text": "Не знайдено результатів для «{query}»." + }, + "emptyState": { + "text": "Знайти щось..." + }, + "searchPage": { + "title": "Ви шукаєте: {query}" + } + }, + "blog": { + "blogHeader": { + "subtitle": "Останні новини Node.js, тематичні дослідження, практичні заняття та ресурси.", + "rssLink": "RSS-канал" + } + } + }, + "layouts": { + "blogPost": { + "author": { + "byLine": "{author, select, null {} other {Від {author}, }}" + } + }, + "blogIndex": { + "categoryName": "{category, select, all {Блог} other {Пости блогу {category}}}" + }, + "blog": { + "title": "Блог", + "selectCategory": "Категорії", + "categories": { + "all": "Усе", + "announcements": "Оголошення", + "release": "Релізи", + "vulnerability": "Уразливості", + "advisory-board": "Консультативний комітет", + "community": "Спільнота", + "feature": "Функціонал", + "module": "Модуль", + "npm": "npm", + "uncategorized": "Без категорії", + "video": "Відео", + "weekly": "Щотижневі оновлення", + "wg": "Робочі групи", + "events": "Події" + } + }, + "error": { + "notFound": { + "title": "Сторінку не знайдено", + "description": "На жаль, нам не вдалося знайти сторінку, яку ви шукаєте! Спробуйте почати знову з головної сторінки." + }, + "internalServerError": { + "title": "Внутрішня помилка сервера", + "description": "На цій сторінці виникла невиправна помилка." + }, + "backToHome": "До головної" + }, + "download": { + "selectCategory": "Категорії", + "categories": { + "prebuilt-installer": "Готовий інсталятор", + "prebuilt-binaries": "Готові бінарні файли", + "package-manager": "Менеджер пакетів", + "source-code": "Вихідний код" + }, + "buttons": { + "prebuilt": "Завантажити Node.js {version}", + "source": "Завантажити вихідний код Node.js {version}" + }, + "dropdown": { + "bitness": "Розрядність", + "os": "Операційна система", + "version": "Версія", + "platform": "Платформа" + }, + "codeBox": { + "fnmEnvSetup": "налаштовує середовище fnm", + "systemManagerWarning": "не є менеджером пакетів Node.js. Переконайтеся, що у вас уже встановлено {packageManager}.", + "communityWarning": "Менеджери пакетів та їхні скрипти встановлення не обслуговуються проєктом Node.js.", + "communityWarningReport": "Якщо у вас виникне проблема, звертайтеся до супроводжувачів менеджера пакетів.", + "installsNvm": "установлює nvm (Node Version Manager)", + "downloadAndInstallNodejsRestartTerminal": "завантажує й установлює Node.js (можливо, вам доведеться перезапустити термінал)", + "verifiesRightNodejsVersion": "перевіряє правильність версії Node.js у середовищі", + "verifiesRightNpmVersion": "перевіряє правильність версії npm у середовищі", + "shouldPrint": "повинно вивести `{version}`", + "installsFnm": "установлює fnm (Fast Node Manager)", + "downloadAndInstallNodejs": "завантажує й установлює Node.js", + "activateFNM": "активує fnm", + "noteWithColon": "ПРИМІТКА:", + "dockerIsNotNodejsPackageManager": "Docker не є менеджером пакетів Node.js.", + "PleaseEndureAlreadyInstallOnSystem": "Переконайтеся, що він уже встановлений на вашій системі.", + "dockerInstructions": "Дотримуйтесь офіційних інструкцій на https://docs.docker.com/desktop/", + "dockerImagesLink": "Образи Docker офіційно надаються на https://github.com/nodejs/docker-node/", + "pullsNodejsDockerImage": "завантажує образ Docker Node.js", + "homebrewIsNotNodejsPackageManager": "Homebrew не є менеджером пакетів Node.js.", + "homebrewInstructions": "Дотримуйтесь офіційних інструкцій на https://brew.sh/", + "homebrewSupportsIntallingMajorNodejsVersion": "Homebrew підтримує лише основні версії Node.js і може не підтримувати останню версію Node.js {version} ряду версій.", + "chocolateyIsNotNodejsPackageManager": "Chocolatey не є менеджером пакетів Node.js.", + "chocolateyInstructions": "Дотримуйтесь офіційних інструкцій на https://chocolatey.org/", + "chocolateyNotMaintanedByNodejs": "Chocolatey офіційно не підтримується проєктом Node.js і може не підтримувати Node.js версії {version}" + } + } + } +} diff --git a/apps/site/pages/uk/about/get-involved/collab-summit.md b/apps/site/pages/uk/about/get-involved/collab-summit.md index 716d001e69b74..33c14ed1e8f2a 100644 --- a/apps/site/pages/uk/about/get-involved/collab-summit.md +++ b/apps/site/pages/uk/about/get-involved/collab-summit.md @@ -1,18 +1,18 @@ --- -title: Саміт співавторів +title: Саміт співпраці layout: about --- -# Саміт співавторів +# Саміт співпраці -Саміт співавторства/Collaboration Summit Node.js ― це "неконференція", на яку збираються поточні та потенційні співавтори, щоб наживо обговорити Node.js та поділитися знаннями. Команди, робочі групи та співавтори зі спільноти збираються двічі на рік для прийняття важливих рішень, водночас маючи змогу попрацювати над ідеями, які вони хочуть просувати особисто. +Саміт співпраці (Collaboration Summit) Node.js ― це «неконференція», на яку збираються поточні та потенційні учасники, щоб наживо обговорювати Node.js та ділитися знаннями. Команди, робочі групи та учасники зі спільноти збираються двічі на рік для прийняття важливих рішень, водночас маючи змогу попрацювати над ідеями, які вони хочуть просувати особисто. ## Хто запрошений? -Участь у Саміті співавторства в основному беруть існуючі учасники та члени спільноти, але він також вітає тих, хто також бажає стати співавтором. Якщо ви новачок у внесенні змін до Node.js, Саміт співавторства може бути гарною можливістю допомогти вам дізнатися, що відбувається в межах спільноти, і зробити внесок вже з тими навичками, які ви хочете покращити. +Участь у Саміті співпраці в основному беруть чинні учасники та члени спільноти, але також запрошені всі, хто ще не є учасником та хоче стати ним. Якщо ви лише починаєте робити внески в Node.js, Саміт співпраці може стати чудовою можливістю дізнатися, що відбувається в спільноті, та відточувати свої навички. -Перед самітом співавтори та учасники спільноти надсилають пропозиції щодо створення розкладу подій. Присутні можуть попередньо ознайомитись з подією та в загальному обговорити її з іншими співавторами, перед тим як відвідати. Також буде багато можливостей для нетворкінгу та брейнштормів. +Перед самітом учасники та члени спільноти надсилають пропозиції щодо сесії для створення розкладу. Відвідувачі можуть ознайомитись із сесією перед її початком, обговоривши загальні питання зі співавторами. Також буде багато можливостей для кулуарних обговорень та мозкових штурмів. -Ми будемо раді бачити вас на Саміті Співатворів/Collab Summit! Перегляньте [репозиторій саміту](https://github.com/nodejs/summit) -для майбутніх і минулих подій і ознайомтесь із -[відкритими питаннями](https://github.com/nodejs/summit/issues), щоб розуміти, які проблеми співавтори та учасники спільноти хочуть обговорити наживо. +Щоб дізнатися більше про майбутні й минулі саміти співпраці, перейдіть на +[репозиторій самітів](https://github.com/openjs-foundation/summit). Ознайомтесь із +[обговореннями](https://github.com/nodejs/summit/issues), у яких учасники та члени спільноти пропонують теми для обговорення наживо. diff --git a/apps/site/pages/uk/about/get-involved/contribute.md b/apps/site/pages/uk/about/get-involved/contribute.md index 781e1119f739a..21bda3e1c870b 100644 --- a/apps/site/pages/uk/about/get-involved/contribute.md +++ b/apps/site/pages/uk/about/get-involved/contribute.md @@ -1,47 +1,47 @@ --- -title: Долучитись до проєкту +title: Внесок у проєкт layout: about --- -# Долучитись до проєкту +# Внесок у проєкт -Ми вдячні за бажання долучитись до Node.js. Існує багато способів та місць де ви можете зробити свій вклад у проєкт, і ми тут, щоб допомогти вам з цим. +Ми вдячні за вашу зацікавленість в участі в Node.js! Існує багато способів і місць, де ви можете робити внески, а ми вам цьому сприятимемо. -## Запит на загальну допомогу +## Запит про загальну допомогу -Через високий рівень активності у репозиторії "nodejs/node\\`, питання або запити про допомогу щодо використання Node.js слід створювати в репозиторії [допомога по Node.js](https://github.com/nodejs/help/issues). +Через високий рівень активності в репозиторії `nodejs/node\` питання та запити про загальну допомогу щодо використання Node.js слід створювати в [репозиторії допомоги з Node.js](https://github.com/nodejs/help/issues). -## Повідомити про проблему +## Повідомлення про проблему -Якщо ви виявили те, що, на вашу думку, є проблемою з Node.js, не вагайтесь повідомити про проблему в GitHub. Заповнюючи інформацію про проблему, будь ласка, переконайтеся, що ви можете викласти суть з можливістю відтворити проблему у формі тесту, який не містить жодних зовнішніх залежностей. Тобто тестовий приклад можна виконати без нічого, окрім самого Node.js. +Якщо ви виявили те, що, на вашу думку, є проблемою в Node.js, не вагайтеся повідомити про неї в GitHub. Заповнюючи інформацію про проблему, будь ласка, переконайтеся, що ви можете викласти її суть з можливістю відтворення у формі тесту, який не містить жодних зовнішніх залежностей. Це означає, що цей тест можна виконати без нічого, крім самого Node.js. -Повідомляючи про проблему нам також потрібно якомога більше інформації, яку ви зможете надати, про середовище в якому вона виникла. Ми не знаємо, яка інформація буде доречною, намагаючись визначити проблему, тому вкажіть, щонайменше, наступне: +Коли ви повідомляєте про проблему, указуйте якомога більше інформації про своє середовище. Вона може бути доречною, коли ми визначатимемо джерело проблеми. Будь ласка, указуйте принаймні наступну інформацію: -- Версія Node.js -- Платформа, на якій ви працюєте (macOS, SmartOS, Linux, Windows) -- Архітектура, на якій ви працюєте (32bit або 64bit та x86 або ARM) +- версію Node.js +- платформу, на якій ви працюєте (macOS, SmartOS, Linux, Windows) +- архітектуру, на якій ви працюєте (32-бітна чи 64-бітна, x86 чи ARM) -Проєкт Node.js наразі керується через кілька окремих репозиторіїв GitHub, кожен з власним списком проблем/запитів. Якщо це можливо, будь ласка, спрямовуйте будь-які проблеми до відповідного репозиторію, але не хвилюйтеся, якщо вони потраплять не в те місце – спільнота співавторів буде рада скерувати вас у правильному напрямку. +Проєкт Node.js наразі керується багатьма окремими репозиторіями GitHub, кожний із власним списком проблем та запитів. Якщо це можливо, будь ласка, спрямовуйте всі проблеми та запити до відповідного репозиторію, але не хвилюйтеся, якщо вони потраплять не туди: спільнота учасників буде рада скерувати вас у правильному напрямку. -- Щоб повідомити про характерні Node.js проблеми, скористайтесь [nodejs/node](https://github.com/nodejs/node) -- Щоб повідомити про проблеми із цим сайтом, скористайтесь [nodejs/nodejs.org](https://github.com/nodejs/nodejs.org/issues) +- Щоб повідомити про проблеми саме в Node.js, скористайтеся [nodejs/node](https://github.com/nodejs/node) +- Щоб повідомити про проблеми в цьому сайті, скористайтеся [nodejs/nodejs.org](https://github.com/nodejs/nodejs.org/issues) -## Внести зміни в код +## Внесок у код -Якщо ви хочете виправити помилки або додати нову функціональність до проєкту, будь ласка, ознайомтесь із [інструкцією як внести зміни до Node.js](https://github.com/nodejs/node/blob/main/CONTRIBUTING.md/#pull-requests). Там також пояснюється процес перегляду співавторами всіх змін до проєкту. +Якщо ви хочете виправити помилки або додати нову функціональність до Node.js, будь ласка, ознайомтесь із [інструкцією щодо внесення змін у Node.js](https://github.com/nodejs/node/blob/main/CONTRIBUTING.md/#pull-requests). Там також пояснюється процес перегляду учасниками всіх змін до проєкту. -Якщо вам цікаво, як почати, ви можете переглянути [список завдань Node](https://www.nodetodo.org/), який може зорієнтувати вас яким чином зробити свій перший вклад у проєкт. +Аби почати роботу, перегляньте [список завдань Node](https://www.nodetodo.org/), який допоможе вам здійснити свій перший внесок у проєкт. -## Стати співавтором +## Як стати співавтором? -Стаючи співавтором, користувачі можуть ще більше вплинути на проєкт. Вони можуть допомогти іншим співавторам, перевіряючи їх вклад у проєкт та сортуючи проблеми, а також брати ще більшу участь у формуванні майбутнього Node.js. Особи, яких TSC (Технічний Наглядовий Комітет) визначив такими - що зробили значний і цінний внесок до будь-якого репозиторію Node.js, можуть стати співавторами та отримати доступ до проєкту. Діяльність, яка береться до уваги, включає (та не обмежуюється) якістю: +Співавтори мають великий уплив на проєкт. Вони можуть допомагати учасникам, оцінюючи їхні внески, пріоритезувати проблеми та безпосередньо формувати майбутнє проєкту. Ті особи, які, згідно з TSC, роблять значний та цінний внесок у будь-якому репозиторії Node.js, можуть стати співавторами та отримати доступ для commit'ів. Дії, які враховуються як внески, включають (але не обмежуються ними) якісні: -- змін/commits та pull requests, що стосуються коду -- змін/commits та pull requests, що стосуються документації -- коментарів до проблем і pull requests -- зробленого внеску у сайт Node.js -- допомоги наданої кінцевим користувачам і новим співавторам -- участі у робочих групах -- участі у ширшій Node.js спільноті +- commit'и та pull request'и, що стосуються коду +- commit'и та pull request'и, що стосуються документації +- коментарі до issue та pull request'ів +- внески в сайт Node.js +- консультації для кінцевих користувачів та нових учасників +- участі в робочих групах +- участі в ширшій спільноті Node.js Якщо особи, що роблять цінний вклад у проєкт, вважають, що вони не розглядались на надання дозволу для внесення змін, тоді вони можуть [створити запит в репозиторії](https://github.com/nodejs/TSC/issues) або [сконтактувати із членом TSC](https://github.com/nodejs/node#tsc-technical-steering-committee) напряму. diff --git a/apps/site/pages/uk/about/get-involved/index.md b/apps/site/pages/uk/about/get-involved/index.md index 7d1e0fd9fbd41..f5d772472c1c3 100644 --- a/apps/site/pages/uk/about/get-involved/index.md +++ b/apps/site/pages/uk/about/get-involved/index.md @@ -22,5 +22,5 @@ layout: about - [Офіційна документація з API](https://nodejs.org/api/). - [NodeSchool.io](https://nodeschool.io/) навчить вас концепцій Node.js за допомогою інтерактивних ігор у командному рядку. - [Тег Node.js у Stack Overflow](https://stackoverflow.com/questions/tagged/node.js) щодня збирає нову інформацію. -- [Тег Node.js на DEV Community](https://dev.to/t/node) — це місце, де можна ділитися проєктами, статтями та практичними заняттями з Node.js, а також почати обговорення та просити відгуки до тем, пов'язаних із Node.js. До участі запрошуються розробники всіх рівнів. +- [Тег Node.js на DEV Community](https://dev.to/t/node) — це місце, де можна ділитися проєктами, статтями та посібниками з Node.js, а також почати обговорення та просити відгуки до тем, пов'язаних із Node.js. До участі запрошуються розробники всіх рівнів. - [Nodeiflux](https://discordapp.com/invite/vUsrbjd) — це дружня спільнота бекенд-розробників Node.js, які підтримують один одного в Discord. diff --git a/apps/site/pages/uk/about/governance.md b/apps/site/pages/uk/about/governance.md index 45d23a97adaea..f9c7acfda8e99 100644 --- a/apps/site/pages/uk/about/governance.md +++ b/apps/site/pages/uk/about/governance.md @@ -7,23 +7,23 @@ layout: about ## Процес пошуку консенсусу -Node.js дотримується [Consensus Seeking][] моделі прийняття рішень. +Node.js дотримується моделі прийняття рішень \[знаходження консенсусу]\[]. ## Співавтори -Основний GitHub репозиторій [nodejs/node][] підтримується співавторами, які на постійній основі вибираються іншими, чинними, співавторами. +Основний репозиторій GitHub [nodejs/node][] обслуговується співавторами, які на постійній основі обираються іншими чинними співавторами. -Особи, які роблять важливий внесок стають співавторами та отримують дозвіл на внесення змін до проєкту. Ці особи визначаються іншими співавторами, а їх номінація на роль співавтора, обговорюється із чинними співавторами. +Особи, які здійснюють важливий та цінний внесок, стають співавторами та отримують доступ для commit'ів. Ці особи визначаються іншими співавторами, а їхня номінація на цю роль обговорюється із чинними співавторами. -Для ознайомлення із поточним списком співучасників, відвідайте [README.md][]. +Щоб дізнатися поточний список співавторів, перегляньте [README.md][]. -Інструкція для співавторів проєкту, підтримується на [collaborator-guide.md][]. +Інструкція для співавторів проєкту є на [collaborator-guide.md][]. ## Технічний керівний комітет -Проєкт керується \[Технічним наглядовим комітетом(TSC)]\[], який відповідальний за високорівневе керування проєктом. TSC - це набір активних співавторів, призначених іншими, чинними членами TSC. +Проєкт керується \\[Технічним керівним комітетом (TSC)]\\[], який відповідальний за високорівневе керування проєктом. TSC — це набір активних співавторів, які номінуються іншими чинними членами TSC. -[consensus seeking]: https://en.wikipedia.org/wiki/Consensus-seeking_decision-making +[consensus seeking]: https://uk.wikipedia.org/wiki/%D0%97%D0%BD%D0%B0%D1%85%D0%BE%D0%B4%D0%B6%D0%B5%D0%BD%D0%BD%D1%8F_%D0%BA%D0%BE%D0%BD%D1%81%D0%B5%D0%BD%D1%81%D1%83%D1%81%D1%83 [readme.md]: https://github.com/nodejs/node/blob/main/README.md#current-project-team-members [tsc]: https://github.com/nodejs/TSC [technical steering committee (tsc)]: https://github.com/nodejs/TSC/blob/main/TSC-Charter.md diff --git a/apps/site/pages/uk/about/index.mdx b/apps/site/pages/uk/about/index.mdx new file mode 100644 index 0000000000000..8a4ba5503f812 --- /dev/null +++ b/apps/site/pages/uk/about/index.mdx @@ -0,0 +1,62 @@ +--- +title: Про Node.js® +layout: about +--- + +Про Node.js® + +Node.js, асинхронне подієве середовище виконання JavaScript, створене будувати масштабовані мережеві застосунки. Наступний приклад «Hello World» може обробляти багато з'єднань одночасно. Після кожного з'єднання виконується функція зворотного виклику, а якщо робота для виконання відсутня, Node.js буде очікувати. + +```cjs +const { createServer } = require('node:http'); + +const hostname = '127.0.0.1'; +const port = 3000; + +const server = createServer((req, res) => { + res.statusCode = 200; + res.setHeader('Content-Type', 'text/plain'); + res.end('Hello World'); +}); + +server.listen(port, hostname, () => { + console.log(`Server running at http://${hostname}:${port}/`); +}); +``` + +```mjs +import { createServer } from 'node:http'; + +const hostname = '127.0.0.1'; +const port = 3000; + +const server = createServer((req, res) => { + res.statusCode = 200; + res.setHeader('Content-Type', 'text/plain'); + res.end('Hello World'); +}); + +server.listen(port, hostname, () => { + console.log(`Server running at http://${hostname}:${port}/`); +}); +``` + +Ця модель використовується на противагу поширенішій моделі, у якій використовуються потоки ОС. Така модель відносно неефективна та важка у використанні. Крім того, користувачі Node.js можуть не хвилюватися про дедлоки, оскільки тут немає блокувань. Майже жодна функція не виконує ввід-вивід безпосередньо, тому процеси не блокуються, за винятком тих випадків, коли ввід-вивід виконується синхронними методами стандартної бібліотеки Node.js. Завдяки відсутності блокувань доцільно створювати масштабовані системи в Node.js. + +Якщо деякі терміни вам незрозумілі, перегляньте статтю про +[блокувальні та неблокувальні виклики][]. + +--- + +Node.js надихався системами [Event Machine][] мови Ruby та [Twisted][] мови Python. Проте Node.js зводить подієву модель на новий рівень. Він представляє цикл подій як основу середовища виконання, а не як бібліотеку. +інших системах присутній блокувальний виклик, який починає цикл подій. Зазвичай поведінка визначається функціями зворотного виклику на початку скрипту, після чого відбувається блокувальний виклик, наприклад, `EventMachine::run()`. Node.js не має такого виклику, а просто запускає цикл подій після виконання ввідного скрипту і виходить із циклу, коли всі зворотні виклики були виконані. Така поведінка схожа з поведінкою браузерного JavaScript — цикл подій прихований від користувача. + +HTTP є повноцінною частиною Node.js, розроблений з урахуванням потокової передачі даних і низької затримки. Це робить Node.js ідеальним варіантом для створення основи для веббібліотеки або фреймворку. + +Те, що Node.js спроєктований без використання потоків, не означає, що ви не можете використовувати багато ядер у своєму середовищі. Дочірні процеси можна створити за допомогою нашого API [`child_process.fork()`][]. Вони спроєктовані так, що з ними можна легко взаємодіяти. Модуль [`cluster`][] побудований на такому самому інтерфейсі, що дозволяє ділити сокети на багато процесів, аби збалансувати навантаження на ядра. + +[блокуючі vs неблокуючі методи]: /learn/asynchronous-work/overview-of-blocking-vs-non-blocking +[`child_process.fork()`]: https://nodejs.org/api/child_process.html +[`cluster`]: https://nodejs.org/api/cluster.html +[event machine]: https://github.com/eventmachine/eventmachine +[twisted]: https://twisted.org/ diff --git a/apps/site/pages/uk/about/security-reporting.mdx b/apps/site/pages/uk/about/security-reporting.mdx index 3ce5c1b0317de..37b8c91f920d7 100644 --- a/apps/site/pages/uk/about/security-reporting.mdx +++ b/apps/site/pages/uk/about/security-reporting.mdx @@ -9,45 +9,45 @@ layout: about ## Повідомлення про помилку в Node.js -Повідомляйте про безпекові проблеми в Node.js через [HackerOne](https://hackerone.com/nodejs). +Повідомляйте про проблеми безпеки в Node.js через [HackerOne](https://hackerone.com/nodejs). -Ваш лист буде розглянуто протягом 5 днів, а протягом 10 днів вам буде надіслано більш деталізовану відповідь з вказівками щодо подальшої обробки вашого запиту. +Ваше повідомлення розглянуть протягом 5 днів, а протягом 10 днів ви отримаєте детальну відповідь, яка міститиме подальші кроки щодо обробки повідомлення. -Після першої відповіді на ваше повідомлення, команда безпеки намагатиметься тримати вас у курсі стосовно прогресу у розв'язанні та оголошенні про проблему. Також, вас можуть попросити надати додаткову інформацію або інструкції стосовно повідомленої помилки. +Після першої відповіді на ваше повідомлення команда з безпеки намагатиметься тримати вас у курсі щодо прогресу в розв'язанні та оголошенні проблеми. У вас можуть попросити додаткову інформацію про повідомлену проблему чи надати рекомендації щодо неї. ### Програма винагород за знайдені помилки від Node.js -Node.js бере участь в офіційній програмі винагород за знайдені помилки для дослідників у сфері безпеки та заради відповідального публічного розкриття інформації. Програма керується через платформу HackerOne. Для детальнішої інформації відвідайте [HackerOne/nodejs](https://hackerone.com/nodejs). +Проєкт Node.js бере участь в офіційній програмі винагород за знайдені помилки для дослідників у галузі безпеки та відповідальних за оголошення інформації. Програма керується через платформу HackerOne. Перейдіть на [https://hackerone.com/nodejs](https://hackerone.com/nodejs), щоб дізнатися більше. ## Повідомлення про помилку в сторонніх модулях -Про помилки в безпеці сторонніх модулів слід повідомляти відповідним особам, які підтримують ці модулі. +Про помилки безпеки сторонніх модулів слід повідомляти їхніх супроводжувачів. ## Політика розкриття інформації -Ось політика розкриття безпекової інформації в Node.js +Ось політика розкриття інформації щодо безпеки в Node.js -Повідомлення про проблему отримане і призначене особі, яка його оброблятиме. Ця особа координуватиме процес виправлення та релізу. При підтверджені проблеми буде визначений список всіх версії у яких вона присутня. Код перевірятиметься на наявність потенційно подібних проблем. Виправлення підготують для всіх релізів, що досі підтримуються. Ці виправлення не будуть додані до загального репозиторію, а будуть зберігатись локально, до моменту офіційного оголошення про виправлення проблеми. +Основний обробник отримує повідомлення про помилку безпеки, яке йому призначається. Ця особа координуватиме процес виправлення помилки та релізу. Помилку знаходять та визначають усі версії, де вона присутня. Код перевіряють на наявність схожих помилок. Потім проводять виправлення для всіх обслуговуваних релізів. Ці виправлення не випускаються в публічний репозиторій, а зберігаються локально, поки не буде здійснено оголошення. -Обирається дата закриття цієї вразливості та робиться запит на CVE (Common Vulnerabilities and Exposures (CVE®)) щодо цієї вразливості. +Обирається дата оголошення цієї вразливості та робиться запит на CVE (Common Vulnerabilities and Exposures (CVE®)) щодо неї. -У день закриття, копія анонсу надсилається списку адресатів, що мають відношення до безпеки в Node.js. Зміни додаються до загального репозиторію і нові збірки розгортаються на nodejs.org. Протягом 6 годин після розсилки повідомлень, копію оголошення буде опубліковано у блозі Node.js. +У цю дату копію оголошення розсилають адресатам, які відповідають за безпеку Node.js. Зміни додаються до публічного репозиторію, а нові збірки — до nodejs.org. Протягом 6 годин після розсилки копію оголошення буде опубліковано в блозі Node.js. -Зазвичай дата закриття встановлюється протягом 72 годин від моменту видання CVE. Однак, це може залежати від серйозності та складності розв'язання проблеми. +Зазвичай датою оголошення є дата через 72 години після запиту на CVE. Однак вона може варіюватися залежно від серйозності помилки та складності її виправлення. -Цей процес може зайняти деякий час, особливо коли необхідна координація з командою підтримки інших проєктів. Всі зусилля будуть спрямовані на те, щоб розв'язати проблему якомога швидше, однак, важливо, щоб ми дотримувались вищезгаданого процесу релізу, щоб бути певними, що все відбувається належним чином. +Цей процес може зайняти певний час, особливо тоді, коли потрібна координація із супроводжувачами інших проєктів. Усі зусилля будуть спрямовані на обробку помилки якомога швидше, однак для нас важливо дотримуватися процесу вище, щоб оголошення відбулося належним чином. -## Отримання безпекових оновлень +## Отримання оновлень безпеки -Сповіщення, що стосуються безпеки, будуть поширюватись наступними методами. +Сповіщення, що стосуються безпеки, будуть поширюватися наступними методами: [Google Group](https://groups.google.com/group/nodejs-sec) -[Node.js Блог](/blog) +[Блог Node.js](/blog) ## Коментарі стосовно цієї політики Якщо у вас є пропозиції щодо покращення цього процесу, створіть [pull request](https://github.com/nodejs/nodejs.org) або -[додайте запит](https://github.com/nodejs/security-wg/issues/new) на обговорення. +[створіть issue](https://github.com/nodejs/security-wg/issues/new) для обговорення. ## Найкращі практики OpenSSF @@ -56,10 +56,10 @@ Node.js бере участь в офіційній програмі винаг style={{ display: 'inline-flex' }} > OpenSSF Badge -The Open Source Security Foundation (OpenSSF) [значок за застосування кращих практик](https://github.com/coreinfrastructure/best-practices-badge) це спосіб Free/Libre та Open Source Software (FLOSS) проєктів продемонструвати, що вони застосовують ці кращі практики. Проєкти можуть самостійно засвідчити, як вони дотримуються найкращих практик. Власники значка можуть швидко оцінити, які проєкти FLOSS дотримуються найкращих практик, і, як наслідок, з більшою ймовірністю створюватимуть якісніше і безпечніше програмне забезпечення. +[Значок за найкращі практики](https://github.com/coreinfrastructure/best-practices-badge) від Open Source Security Foundation (OpenSSF) — це спосіб для проєктів із відкритим кодом (Free/Libre and Open Source Software, FLOSS) показати, що вони дотримуються найкращих практик. Проєкти можуть самостійно описати, як вони дотримуються кожної практики. Користувачі можуть швидко оцінити, які проєкти FLOSS дотримуються найкращих практик і, як результат, створювати безпечне ПЗ кращої якості.