Skip to content

fix(crowdin): workflow improvements #7755

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 10 additions & 15 deletions .github/workflows/translations-sync.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)'
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
38 changes: 38 additions & 0 deletions apps/site/pages/uk/about/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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).
32 changes: 23 additions & 9 deletions apps/site/pages/uk/about/previous-releases.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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`.
- **Вільність і відкритість вихідного коду:** Повинні бути вільними для використання та мати відкритий вихідний код, не можуть продаватися як комерційний продукт та не можуть бути платним сервісом.
87 changes: 49 additions & 38 deletions apps/site/pages/zh-tw/about/branding.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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。

<img
alt="Node.js 吉祥物"
src="/static/images/node-mascot.svg"
Expand All @@ -22,51 +24,60 @@ Node.js 的品牌形象
### Node.js® 橫向標誌

<table>
<tr>
<td>
<img alt="Node.js® 暗色橫向標誌" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" />
</td>

<td>
<img alt="Node.js® 亮色橫向標誌" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" />
</td>
</tr>
<tbody>
<tr>
<td>
<img alt="Node.js® 暗色橫向標誌" src="/static/logos/nodejsDark.svg" className="h-[80px] w-[267px]" width="267" height="80" />
</td>

<td>
<img alt="Node.js® 亮色橫向標誌" src="/static/logos/nodejsLight.svg" className="h-[80px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="80" />
</td>
</tr>

</tbody>
</table>

### Node.js® 堆疊標誌

<table>
<tr>
<td>
<img alt="Node.js® 暗色堆疊標誌" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" />
</td>

<td>
<img alt="Node.js® 亮色堆疊標誌" src="/static/logos/nodejsStackedLight.svg" className="h-[164px] w-[267px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" />
</td>
</tr>

<tr>
<td>
<img alt="Node.js® 黑色堆疊標誌" src="/static/logos/nodejsStackedBlack.svg" />
</td>

<td>
<img alt="Node.js® 白色堆疊標誌" src="/static/logos/nodejsStackedWhite.svg" className="rounded-xs bg-neutral-950 p-2 dark:bg-transparent" />
</td>
</tr>
<tbody>
<tr>
<td>
<img alt="Node.js® 暗色堆疊標誌" src="/static/logos/nodejsStackedDark.svg" className="h-[164px] w-[267px]" width="267" height="164" />
</td>

<td>
<img alt="Node.js® 亮色堆疊標誌" src="/static/logos/nodejsStackedLight.svg" className="rounded-xs h-[164px] w-[267px] bg-neutral-950 p-2 dark:bg-transparent" width="267" height="164" />
</td>
</tr>

<tr>
<td>
<img alt="Node.js® 黑色堆疊標誌" src="/static/logos/nodejsStackedBlack.svg" />
</td>

<td>
<img alt="Node.js® 白色堆疊標誌" src="/static/logos/nodejsStackedWhite.svg" className="rounded-xs bg-neutral-950 p-2 dark:bg-transparent" />
</td>
</tr>

</tbody>
</table>

### JS 圖示

<table>
<tr>
<td>
<img alt="綠色 JS 圖示" src="/static/logos/jsIconGreen.sv" className="height-[80px] mx-auto w-[71px]" width="71" height="80" />
</td>

<td>
<img alt="白色 JS 圖示" src="/static/logos/jsIconWhite.svg" className="height-[80px] mx-auto w-[71px] rounded-xs bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" />
</td>
</tr>
<tbody>
<tr>
<td>
<img alt="綠色 JS 圖示" src="/static/logos/jsIconGreen.svg" className="height-[80px] mx-auto w-[71px]" width="71" height="80" />
</td>

<td>
<img alt="白色 JS 圖示" src="/static/logos/jsIconWhite.svg" className="height-[80px] rounded-xs mx-auto w-[71px] bg-neutral-950 p-2 dark:bg-transparent" width="71" height="80" />
</td>
</tr>

</tbody>
</table>
29 changes: 27 additions & 2 deletions packages/i18n/locales/uk.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
"links": {
"asynchronousWork": "Асинхронна робота",
"asynchronousFlowControl": "Асинхронне управління потоком",
"discoverPromisesInNodejs": "Проміси в Node.js",
"overviewOfBlockingVsNonBlocking": "Огляд блокувальних і неблокувальних викликів",
"javascriptAsynchronousProgrammingAndCallbacks": "Асинхронне програмування і функції зворотного виклику в JavaScript",
"discoverJavascriptTimers": "Таймери JavaScript",
Expand Down Expand Up @@ -108,6 +109,7 @@
"links": {
"diagnostics": "Діагностика",
"userJourney": "Шлях користувача",
"understandingAndTuningMemory": "Розуміння та налаштування пам'яті",
"memory": "Пам’ять",
"liveDebugging": "Налагодження в реальному часі",
"poorPerformance": "Низька продуктивність",
Expand Down Expand Up @@ -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": "Назад"
Expand Down
Loading
Loading