diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml
index 5e3cd42ce7b37..d6674614e56a0 100644
--- a/.github/workflows/translations-sync.yml
+++ b/.github/workflows/translations-sync.yml
@@ -18,12 +18,12 @@ concurrency:
permissions:
contents: read
+env:
+ BRANCH_NAME: chore/crowdin
+
jobs:
synchronize-with-crowdin:
runs-on: ubuntu-latest
- outputs:
- pull_request_number: ${{ steps.crowdin_pr.outputs.pull_request_number }}
-
steps:
- name: Harden Runner
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
@@ -38,14 +38,13 @@ jobs:
# see all the options at https://github.com/crowdin/github-action
- name: Crowdin PR
uses: crowdin/github-action@b8012bd5491b8aa8578b73ab5b5f5e7c94aaa6e2 # v2.7.0
- id: crowdin_pr
with:
# do not upload anything - this is a one-way operation download
upload_sources: false
upload_translations: false
# the rest of this controls how the PR comes in with new translations
download_translations: true
- localization_branch_name: chore/crowdin
+ localization_branch_name: ${{ env.BRANCH_NAME }}
create_pull_request: true
pull_request_title: '[automated]: crowdin sync'
pull_request_body: 'New Crowdin translations from the [Node.js Crowdin project](https://crowdin.com/project/nodejs-web)'
@@ -74,8 +73,7 @@ jobs:
- name: Git Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
- # Use the number from the output of crowdin/github-action
- ref: refs/pull/${{ needs.synchronize-with-crowdin.outputs.pull_request_number }}/head
+ ref: ${{ env.BRANCH_NAME }}
token: ${{ secrets.CROWDIN_GITHUB_BOT_TOKEN }}
- name: Restore Lint Cache
@@ -109,15 +107,12 @@ jobs:
- name: Install packages
run: pnpm install --frozen-lockfile
- - name: Run `lint:md --fix`
- # This runs a specific version of ESLint with only the Translation Pages Globbing
- # This avoid that unrelated changes get linted/modified within this PR
- run: pnpm exec eslint "apps/site/pages/**/*.md?(x)" --fix --cache --cache-strategy=metadata --cache-file=apps/site/.eslintmdcache --config=apps/site/eslint.config.js
+ - name: Run ESLint
+ working-directory: apps/site
+ run: pnpm lint:md --fix
- - name: Run `prettier --write`
- # This runs a specific version of Prettier with only the Translation Pages Globbing
- # This avoid that unrelated changes get prettied/modified within this PR
- run: pnpm exec prettier "apps/site/{pages,i18n}/**/*.{json,md,mdx}" --check --write --cache --cache-strategy=metadata --cache-location=apps/site/.prettiercache
+ - name: Run Prettier
+ run: pnpm prettier:fix
- name: Push Changes back to Pull Request
uses: stefanzweifel/git-auto-commit-action@b863ae1933cb653a53c021fe36dbb774e1fb9403 # v5.2.0
diff --git a/apps/site/pages/uk/about/index.mdx b/apps/site/pages/uk/about/index.mdx
index 11a83ab918c7f..a6ee2409318fb 100644
--- a/apps/site/pages/uk/about/index.mdx
+++ b/apps/site/pages/uk/about/index.mdx
@@ -53,3 +53,41 @@ Node.js надихався системами [Event Machine](https://github.com
HTTP є повноцінною частиною Node.js, розроблений з урахуванням потокової передачі даних і низької затримки. Це робить Node.js ідеальним варіантом для створення основи для веббібліотеки або фреймворку.
Те, що Node.js спроєктований без використання потоків, не означає, що ви не можете використовувати багато ядер у своєму середовищі. Дочірні процеси можна створити за допомогою нашого API [`child_process.fork()`](https://nodejs.org/api/child_process.html). Вони спроєктовані так, що з ними можна легко взаємодіяти. Модуль [`cluster`](https://nodejs.org/api/cluster.html) побудований на такому самому інтерфейсі, що дозволяє ділити сокети на багато процесів, аби збалансувати навантаження на ядра.
+
+## Офіційні ресурси Node.js
+
+Щоб забезпечити автентичність та безпеку під час роботи з Node.js, завжди використовуйте офіційні джерела. Не довіряйте електронним листам, бінарним файлам та завантаженням із неофіційних джерел.
+
+### Офіційні домени Node.js
+
+Для завантаження бінарних файлів Node.js та використання офіційної документації використовуйте лише ці домени:
+
+- [nodejs.org](https://nodejs.org)
+- [nodejs.dev](https://nodejs.dev) _(Перенаправляє на https://nodejs.org)_
+- [iojs.org](https://iojs.org) _(Перенаправляє на https://nodejs.org)_
+
+### Офіційні пакети npm
+
+Команда Node.js підтримує такі офіційні простори імен в npm:
+
+- [`@node-core`](https://npmjs.com/~node-core)
+- [`@pkgjs`](https://npmjs.com/~pkgjs)
+
+Крім того, команда Node.js супроводжує пакети, опубліковані обліковим записом npm [`nodejs-foundation`](https://npmjs.com/~nodejs-foundation). Інші пакети, які стосуються Node.js (як‑от [`undici`](https://www.npmjs.com/package/undici)), також можуть супроводжуватися учасниками з близькими зв'язками з проєктом.
+
+Використання пакетів команди Node.js гарантує, що ви працюватимете з офіційно підтримуваними компонентами Node.js.
+
+### Офіційні організації GitHub
+
+Node.js та інші проєкти супроводжуються під цими офіційними організаціями GitHub:
+
+- [nodejs](https://github.com/nodejs)
+- [pkgjs](https://github.com/pkgjs)
+
+### Офіційні канали зв'язку
+
+Node.js та OpenJS Foundation комунікують через різні офіційні та спільнотні канали. Деталі, як долучитися до них, можна знайти на сторінці [Долучитися](https://nodejs.org/en/about/get-involved).
+
+### Повідомлення про проблеми й неполадки сайту
+
+Якщо ви помітите проблеми з вебсайтом Node.js, повідомте про них на [репозиторії вебсайту](https://github.com/nodejs/nodejs.org/issues). Щоб отримати дані про неполадки в реальному часі, відвідайте [сторінку статусу Node.js](https://status.nodejs.org).
diff --git a/apps/site/pages/uk/about/previous-releases.mdx b/apps/site/pages/uk/about/previous-releases.mdx
index c50df72d0f0b5..17b1240d727a8 100644
--- a/apps/site/pages/uk/about/previous-releases.mdx
+++ b/apps/site/pages/uk/about/previous-releases.mdx
@@ -26,14 +26,28 @@ layout: about
## Офіційні та спільнотні методи установки
-Вебсайт Node.js пропонує різні методи установки, з якими можна встановити Node.js неінтерактивно. Наприклад, за допомогою інтерфейсів командного рядка, менеджерів пакетів ОС (як-от `apt`) або менеджерів версій Node.js (як-от `nvm`).
+Вебсайт Node.js пропонує кілька неінтерактивних методів установки, як-от інтерфейси командного рядка (CLI), менеджери пакетів ОС (напр. `brew`) та менеджери версій Node.js (напр. `nvm`).
-Аби популяризувати та прорекламувати внески спільноти, проєкт Node.js представив нову сторінку завантажень, яка містить і офіційні, і спільнотні методи установки, що надає більше гнучкості та опцій для користувачів.
-Разом з цим ми представили концепцію «офіційних» та «спільнотних» методів установки. Щоб метод уважався «офіційним», він повинний відповідати наступним вимогам:
+Аби показати та просувати внески спільноти, проєкт Node.js представляє нову сторінку завантажень, яка поділяє методи установки на «офіційні» та «спільнотні». Це надає користувачам більше гнучкості та вибору, а для зрозумілості ми створили критерії для кожної категорії.
-| Вимоги |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Нові релізи Node.js повинні бути доступні одразу після офіційного релізу |
-| Супроводжувачі проєкту повинні мати близькі зв'язки з Node.js, у тому числі пряме спілкування |
-| Метод установки завантажує офіційні бінарні файли, зібрані проєктом Node.js |
-| Метод установки **не** повинний будувати з вихідного коду, коли доступні бінарні файли, та не повинний змінювати офіційні бінарні файли, надані Node.js |
+### Офіційні методи установки
+
+«Офіційні» методи установки повинні виконувати наступні вимоги:
+
+| Вимоги до офіційних методів установки |
+| :------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Нові релізи Node.js повинні бути доступні одразу після офіційного релізу. |
+| Супроводжувачі проєкту повинні мати близькі зв'язки з проєктом Node.js, у тому числі й пряме спілкування. |
+| Метод установки повинний завантажувати офіційні бінарні файли, зібрані проєктом Node.js. |
+| Метод установки не повинний будувати з вихідного коду, коли доступні вже збудовані бінарні файли, а також не має змінювати офіційні бінарні файли. |
+
+### Спільнотні методи установки
+
+Спільнотні методи установки, які містяться на самообслуговуваній сторінці завантажень (/download), також мають відповідати мінімальному набору критеріїв:
+
+- **Підтримка версій:** Повинні підтримувати всі версії Node.js, які не мають статусу End-of-Life (EOL).
+- **Сумісність ОС:** Повинні працювати на принаймні одній офіційно підтримуваній операційній системі (ОС).
+- **Широка підтримка ОС:** Не можуть обмежуватися лише кількома дистрибутивами чи версіями ОС.
+ - Наприклад, якщо метод установки заявляє, що підтримує «Windows», він повинний працювати на «Windows 10», «Windows 11» та всіх їхніх випусках (включно із серверними версіями).
+ - Схожим чином, якщо метод установки заявляє, що підтримує «Linux», він повинний працювати на всіх великих дистрибутивах Linux, а не лише на конкретних. Також він не може покладатися на менеджери пакетів, специфічних для деяких дистрибутивів, як-от `apt` чи `dnf`.
+- **Вільність і відкритість вихідного коду:** Повинні бути вільними для використання та мати відкритий вихідний код, не можуть продаватися як комерційний продукт та не можуть бути платним сервісом.
diff --git a/apps/site/pages/zh-tw/about/branding.mdx b/apps/site/pages/zh-tw/about/branding.mdx
index 11beabae534cb..b67baa381f398 100644
--- a/apps/site/pages/zh-tw/about/branding.mdx
+++ b/apps/site/pages/zh-tw/about/branding.mdx
@@ -3,12 +3,14 @@ title: Node.js 的品牌形象
layout: about
---
-Node.js 的品牌形象
+# Node.js 的品牌形象
請閱讀[商標政策](https://trademark-policy.openjsf.org/)以取得 Node.js® 商標與標誌的使用權資訊。
## Node.js 吉祥物
+感謝 [Angela Angelini](https://www.linkedin.com/in/angeliningl/) 設計及貢獻了 Rocket Turtle。
+
-
-
-
- |
-
-
-
- |
-
+
+
+
+
+ |
+
+
+
+ |
+
+
+
### Node.js® 堆疊標誌
-
-
-
- |
-
-
-
- |
-
-
-
-
-
- |
-
-
-
- |
-
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+ |
+
+
+
### JS 圖示
-
-
-
- |
-
-
-
- |
-
+
+
+
+
+ |
+
+
+
+ |
+
+
+
diff --git a/packages/i18n/locales/uk.json b/packages/i18n/locales/uk.json
index c6e1d1ce2b21a..a54075b6997d5 100644
--- a/packages/i18n/locales/uk.json
+++ b/packages/i18n/locales/uk.json
@@ -61,6 +61,7 @@
"links": {
"asynchronousWork": "Асинхронна робота",
"asynchronousFlowControl": "Асинхронне управління потоком",
+ "discoverPromisesInNodejs": "Проміси в Node.js",
"overviewOfBlockingVsNonBlocking": "Огляд блокувальних і неблокувальних викликів",
"javascriptAsynchronousProgrammingAndCallbacks": "Асинхронне програмування і функції зворотного виклику в JavaScript",
"discoverJavascriptTimers": "Таймери JavaScript",
@@ -108,6 +109,7 @@
"links": {
"diagnostics": "Діагностика",
"userJourney": "Шлях користувача",
+ "understandingAndTuningMemory": "Розуміння та налаштування пам'яті",
"memory": "Пам’ять",
"liveDebugging": "Налагодження в реальному часі",
"poorPerformance": "Низька продуктивність",
@@ -147,15 +149,38 @@
"downloadReleasesTable": {
"version": "Node.js",
"nApiVersion": "N-API",
- "npmVersion": "npm",
"codename": "Кодова назва",
"releaseDate": "Опубліковано",
+ "firstReleased": "Уперше випущено",
+ "lastUpdated": "Востаннє оновлено",
+ "status": "Статус",
+ "details": "Деталі"
+ },
+ "releaseModal": {
+ "title": "Node.js {version} ({codename})",
+ "titleWithoutCodename": "Node.js {version}",
+ "overview": "Огляд",
+ "minorVersions": "Мінорні версії",
+ "releaseAnnouncement": "Оголошення релізу",
+ "unsupportedVersionWarning": "Ця версія більше не супроводжується. Будь ласка, використовуйте підтримувану версію."
+ },
+ "minorReleasesTable": {
+ "version": "Версія",
+ "links": "Посилання",
"actions": {
+ "release": "Реліз",
"changelog": "Список змін",
- "releases": "Релізи",
"docs": "Документація"
}
},
+ "releaseOverview": {
+ "firstReleased": "Уперше випущено",
+ "lastUpdated": "Востаннє оновлено",
+ "minorVersions": "Мінорних версій",
+ "nApiVersion": "Версія N-API",
+ "npmVersion": "Версія npm",
+ "v8Version": "Версія V8"
+ },
"pagination": {
"next": "Далі",
"previous": "Назад"
diff --git a/packages/i18n/locales/zh-tw.json b/packages/i18n/locales/zh-tw.json
index 32400f7c9c2fc..d13e02455eb97 100644
--- a/packages/i18n/locales/zh-tw.json
+++ b/packages/i18n/locales/zh-tw.json
@@ -61,6 +61,7 @@
"links": {
"asynchronousWork": "非同步工作",
"asynchronousFlowControl": "非同步流程控制",
+ "discoverPromisesInNodejs": "探索 Node.js 中的 Promise",
"overviewOfBlockingVsNonBlocking": "阻塞與非阻塞概述",
"javascriptAsynchronousProgrammingAndCallbacks": "JavaScript 中的非同步程式與回呼函式",
"discoverJavascriptTimers": "探索 JavaScript 計時器",
@@ -108,6 +109,7 @@
"links": {
"diagnostics": "診斷訊息",
"userJourney": "使用者旅程",
+ "understandingAndTuningMemory": "深入瞭解並調教記憶體",
"memory": "記憶體",
"liveDebugging": "即時偵錯",
"poorPerformance": "低效能",
@@ -147,15 +149,38 @@
"downloadReleasesTable": {
"version": "Node.js",
"nApiVersion": "N-API",
- "npmVersion": "npm",
"codename": "代號",
"releaseDate": "發佈於",
+ "firstReleased": "首次釋出於",
+ "lastUpdated": "上次更新於",
+ "status": "狀態",
+ "details": "詳細資訊"
+ },
+ "releaseModal": {
+ "title": "Node.js {version} ({codename})",
+ "titleWithoutCodename": "Node.js {version}",
+ "overview": "概覽",
+ "minorVersions": "小版本",
+ "releaseAnnouncement": "發行公告",
+ "unsupportedVersionWarning": "此版本已不再維護。請使用現正支援的版本。"
+ },
+ "minorReleasesTable": {
+ "version": "版本",
+ "links": "連結",
"actions": {
+ "release": "發行版本",
"changelog": "更新紀錄",
- "releases": "發行版本",
"docs": "文件"
}
},
+ "releaseOverview": {
+ "firstReleased": "首次釋出於",
+ "lastUpdated": "上次更新於",
+ "minorVersions": "小版本",
+ "nApiVersion": "N-API 版本",
+ "npmVersion": "npm 版本",
+ "v8Version": "V8 版本"
+ },
"pagination": {
"next": "下一頁",
"previous": "上一頁"