diff --git a/apps/site/pages/fr/about/branding.mdx b/apps/site/pages/fr/about/branding.mdx index 21e0637877db9..bf2468302c34a 100644 --- a/apps/site/pages/fr/about/branding.mdx +++ b/apps/site/pages/fr/about/branding.mdx @@ -58,7 +58,7 @@ Crédit à [Angela Angelini](https://www.linkedin.com/in/angeliningl/) pour la c - Logo empilé clair de Node.js + Logo empilé clair de Node.js @@ -85,7 +85,7 @@ Crédit à [Angela Angelini](https://www.linkedin.com/in/angeliningl/) pour la c - Icons JS Blanc + Icons JS Blanc diff --git a/apps/site/pages/id/about/branding.mdx b/apps/site/pages/id/about/branding.mdx index 30a17e43ad855..a9cb12a0c8c50 100644 --- a/apps/site/pages/id/about/branding.mdx +++ b/apps/site/pages/id/about/branding.mdx @@ -58,7 +58,7 @@ Penghargaan kepada [Angela Angelini](https://www.linkedin.com/in/angeliningl/) a - Logo Terang Bertumpuk Node.js® + Logo Terang Bertumpuk Node.js® @@ -85,7 +85,7 @@ Penghargaan kepada [Angela Angelini](https://www.linkedin.com/in/angeliningl/) a - Ikon JS Putih + Ikon JS Putih diff --git a/apps/site/pages/pt-br/about/branding.mdx b/apps/site/pages/pt-br/about/branding.mdx new file mode 100644 index 0000000000000..46b49bbf1fd24 --- /dev/null +++ b/apps/site/pages/pt-br/about/branding.mdx @@ -0,0 +1,93 @@ +--- +title: Marca do Node.js +layout: about +--- + +# Marca do Node.js + +Por favor, revise a [política de marcas registradas](https://trademark-policy.openjsf.org/) para informações sobre o uso permitido dos logotipos e marcas do Node.js®. + +## Mascote do Node.js® + +Créditos a [Angela Angelini](https://www.linkedin.com/in/angeliningl/) por projetar e contribuir com a Rocket Turtle. + +Mascote do Node.js + +## Logotipos do Node.js® + +### Logotipo Hexagonal do Node.js® + +Logotipo Hexagonal do Node.js + +### Logotipo Horizontal do Node.js® + + + + + + + + + + +
+ Logotipo Horizontal Escuro do Node.js + + Logotipo Horizontal Claro do Node.js +
+ +### Logotipo Empilhado do Node.js® + + + + + + + + + + + + + + + + +
+ Logotipo Empilhado Escuro do Node.js + + Logotipo Empilhado Claro do Node.js +
+ Logotipo Empilhado Preto do Node.js + + Logotipo Empilhado Branco do Node.js +
+ +### Ícones JS + + + + + + + + + + +
+ Ícones JS Verdes + + Ícones JS Brancos +
diff --git a/apps/site/pages/pt-br/about/eol.mdx b/apps/site/pages/pt-br/about/eol.mdx new file mode 100644 index 0000000000000..c5212a3161e37 --- /dev/null +++ b/apps/site/pages/pt-br/about/eol.mdx @@ -0,0 +1,46 @@ +--- +title: Fim de Vida Útil +layout: about +description: Entenda o Fim de Vida Útil (End-of-Life ou EOL) do Node.js, o que isso significa para segurança, ferramentas e conformidade, além de detalhes sobre versões EOL e opções de suporte comercial. +--- + +# Fim de Vida Útil (EOL) + +## Por que e como as versões do Node.js chegam ao Fim de Vida Útil + +As versões principais (major) do Node.js são lançadas, corrigidas e designadas como Fim de Vida Útil (EOL) em um cronograma previsível. Como não é viável manter todas as linhas de versão indefinidamente, após um período de manutenção planejado, uma linha de versão principal do Node.js deixa de ser mantida pelo projeto. + +
+ + +ou + + +
+ +[Veja o cronograma de versões do Node.js](/about/releases/). + +## O que acontece quando uma versão atinge o EOL + +Quando uma versão atinge o Fim de Vida Útil, isso significa que ela não receberá mais atualizações, incluindo correções de segurança. Isso pode deixar aplicações executadas nessas versões vulneráveis a falhas de segurança que nunca serão corrigidos. + +- **Vulnerabilidades não serão mais corrigidas**: Quando novas versões de segurança descobrem vulnerabilidades e trazem correções para as versões mais recentes, mesmo que a vulnerabilidade afete versões EOL, não haverá novas versões para elas. Usuários que ainda insistem em usar versões EOL e utilizam código afetado ficarão imediatamente vulneráveis a ataques que exploram essas vulnerabilidades divulgadas. +- **Incompatibilidade com ferramentas**: Versões EOL podem parar de se vincular dinamicamente às versões mais recentes das bibliotecas compartilhadas das quais dependem, bloqueando ou quebrando atualizações do sistema. +- **Afastamento do ecossistema**: Muitos pacotes populares deixam de oferecer suporte para versões EOL do Node.js ao longo do tempo. Quando uma aplicação se apega a pacotes desatualizados, ela pode sofrer com ainda mais vulnerabilidades e bugs não corrigidos, ficando cada vez mais isolada das práticas atuais do ecossistema. +- **Problemas de conformidade**: Muitas auditorias do setor proíbem o uso de ambientes de execução sem manutenção. + +## Versões EOL + + + +## Suporte comercial + +Apesar das desvantagens óbvias de usar versões EOL, na prática, as organizações enfrentam limitações que impedem atualizações imediatas, como bases de código legadas, requisitos de conformidade ou cadeias de dependência complexas. Por meio do [Programa de Sustentabilidade do Ecossistema da OpenJS Foundation (OpenJS Foundation Ecosystem Sustainability Program)](https://openjsf.org/blog/ecosystem-sustainability-program), Node.js é apoiado pela HeroDevs e NodeSource para fornecer serviços comerciais de correções de segurança. + +HeroDevs fornece [Suporte Sem Fim (NES)](https://nodejs.org/esp/herodevs) para versões do Node.js que já passaram de sua fase oficial de manutenção. Isso inclui patches de segurança, assistência de conformidade e suporte técnico para ajudar a preencher a lacuna enquanto você planeja sua estratégia de atualização. + +O uso de versões EOL através de suporte comercial deve ser visto como uma solução temporária - o objetivo deve ser sempre atualizar para versões ativamente mantidas. diff --git a/apps/site/pages/pt-br/about/get-involved/collab-summit.md b/apps/site/pages/pt-br/about/get-involved/collab-summit.md new file mode 100644 index 0000000000000..f2db0a2fac36c --- /dev/null +++ b/apps/site/pages/pt-br/about/get-involved/collab-summit.md @@ -0,0 +1,16 @@ +--- +title: Encontro de Colaboradores +layout: about +--- + +# Encontro de Colaboradores + +O Encontro de Colaboradores do Node.js é um evento informal que reúne a comunidade, incluindo contribuidores atuais e em potencial, para discutir o Node.js em um ambiente de colaboração ativa, aprendizado e troca de conhecimentos. Duas vezes por ano, equipes, grupos de trabalho e contribuidores se encontram para debates que auxiliam na tomada de decisões e para trabalhar presencialmente em iniciativas inovadoras que desejam impulsionar. + +## Quem pode participar? + +O Encontro de Colaboradores tem como público principal os contribuidores ativos e os membros da comunidade, mas também está de portas abertas para quem ainda não contribui e tem interesse em participar. Se você está começando a colaborar com o Node.js, o Encontro pode ser uma ótima oportunidade para se inteirar sobre o que acontece na comunidade e contribuir com as habilidades que você possui e deseja desenvolver. + +Antes do encontro, os colaboradores e membros da comunidade enviam propostas de sessões para criar um cronograma. Os participantes podem se familiarizar com as sessões antes de chegarem ao local, participando das discussões gerais dos colaboradores e, em seguida, se aprofundando nas sessões. Haverá também muitas oportunidades para conversas informais e sessões de brainstorm. + +Para informações sobre os Encontros de Colaboradores futuros e passados, confira o [repositório do Encontro](https://github.com/openjs-foundation/summit). Dê uma olhada nas [issues registradas](https://github.com/nodejs/summit/issues) que compartilham o que os contribuidores e membros da comunidade estão propondo para discutir pessoalmente. diff --git a/apps/site/pages/pt-br/about/get-involved/events.mdx b/apps/site/pages/pt-br/about/get-involved/events.mdx new file mode 100644 index 0000000000000..659c779328805 --- /dev/null +++ b/apps/site/pages/pt-br/about/get-involved/events.mdx @@ -0,0 +1,16 @@ +--- +title: Eventos Futuros +layout: about +--- + +## Eventos Futuros + +Os eventos do Node.js são abertos ao público. Qualquer pessoa é bem-vinda para participar e contribuir. + +### Próximas Reuniões do Node.js® + +O projeto Node.js realiza diversas reuniões ao longo do ano para discutir e planejar aspectos do projeto. + +As seguintes reuniões acontecerão nos próximos 7 dias. + + diff --git a/apps/site/pages/pt-br/about/get-involved/index.md b/apps/site/pages/pt-br/about/get-involved/index.md new file mode 100644 index 0000000000000..4d8e041b17176 --- /dev/null +++ b/apps/site/pages/pt-br/about/get-involved/index.md @@ -0,0 +1,34 @@ +--- +title: Participe +layout: about +--- + +# Participe + +Se você está interessado em se envolver com a comunidade Node.js, existem muitas maneiras de fazer isto. O projeto Node.js é uma grande e diversa comunidade com muitas formas de contribuir além de apenas escrever códigos. + +## Discussões da Comunidade + +- O [repositório `nodejs/node` no Github](https://github.com/nodejs/node/issues) é o lugar para discutir funcionalidades do core do Node.js e reportar problemas. +- O [repositório `nodejs/node` no Github](https://github.com/nodejs/help/issues) é o lugar oficial para perguntar sobre Node.js. +- O [servidor oficial do Node.js](https://discord.gg/nodejs) é um lugar para conversar com outros desenvolvedores e ver notícias oficiais do projeto Node.js. +- [Calendário de projetos](https://nodejs.org/calendar) do Node.js com todas as reuniões públicas da equipe do Node.js. + +## Materiais de Aprendizado + +Se você está procurando aprender mais sobre o Node.js, há muitos recursos disponíveis para você. + +- [Materiais de aprendizagem oficiais](https://nodejs.org/en/learn/) do Node.js. +- [Documentação oficial de referência da API](https://nodejs.org/api/) do Node.js. +- [NodeSchool.io](https://nodeschool.io/) ensina conceitos Node.js através de jogos interativos de linha de comando. +- [A tag Node.js no StackOverflow](https://stackoverflow.com/questions/tagged/node.js) contém um grande número de tópicos com recursos úteis. +- [A tag Node.js no DEV Community](https://dev.to/t/node) contém artigos e conteúdo relacionados ao Node.js. + +## Áreas de Discussão Não Oficiais + +Existem diversas áreas de discussão não oficiais, caso você esteja procurando por um lugar mais informal para discutir Node.js. Observe que o projeto Node.js não as endossa oficialmente. Siga os respectivos códigos de conduta/regras. + +- [Node Slackers](https://www.nodeslackers.com/) é uma comunidade no Slack focada em Node.js. +- [OpenJSF Slack](https://slack-invite.openjsf.org/) é um espaço no Slack para a OpenJS Foundation. Há vários canais relacionados ao Node.js. _(canais com prefixo `#nodejs-` estão relacionados ao projeto)_ +- O [r/node](https://www.reddit.com/r/node/) é um subreddit focado em Node.js. +- `irc.libera.chat` no canal `#node.js` com um [cliente IRC](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) ou conecte-se diretamente no seu navegador usando [um cliente web](https://kiwiirc.com/nextclient/). diff --git a/apps/site/pages/pt-br/about/governance.md b/apps/site/pages/pt-br/about/governance.md new file mode 100644 index 0000000000000..7b0bae664faba --- /dev/null +++ b/apps/site/pages/pt-br/about/governance.md @@ -0,0 +1,26 @@ +--- +title: Governança do Projeto +layout: about +--- + +# Governança do Projeto + +## Processo de Busca por Consenso + +O projeto Node.js segue um modelo de tomada de decisão baseado em [Busca por Consenso](https://en.wikipedia.org/wiki/Consensus-seeking_decision-making). + +## Colaboradores + +O repositório principal do GitHub [nodejs/node](https://github.com/nodejs/node) é mantido pelos Colaboradores, que são nomeados por outros Colaboradores existentes de forma contínua. + +Indivíduos que fazem contribuições significativas e valiosas são nomeados Colaboradores e recebem acesso de commit ao projeto. Essas pessoas são identificadas por outros Colaboradores e sua nomeação é discutida com os Colaboradores existentes. + +Para a lista atual de Colaboradores, consulte o [README.md](https://github.com/nodejs/node/blob/main/README.md#current-project-team-members) do projeto. + +Um guia para Colaboradores é mantido em [collaborator-guide.md](https://github.com/nodejs/node/blob/main/doc/contributing/collaborator-guide.md). + +## Comitê de Direção Técnica (TSC) + +O projeto é governado pelo [Comitê de Direção Técnica (Technical Steering Committee ou TSC)](https://github.com/nodejs/TSC/blob/main/TSC-Charter.md), +que é responsável pela orientação de alto nível do projeto. O TSC é um +subconjunto de Colaboradores ativos que são nomeados por outros membros existentes do TSC. diff --git a/apps/site/pages/pt-br/about/index.mdx b/apps/site/pages/pt-br/about/index.mdx new file mode 100644 index 0000000000000..152d700f38098 --- /dev/null +++ b/apps/site/pages/pt-br/about/index.mdx @@ -0,0 +1,92 @@ +--- +title: Sobre o Node.js® +layout: about +--- + +# Sobre o Node.js® + +Como um ambiente de execução JavaScript assíncrono orientado a eventos, o Node.js é projetado para criar aplicações de rede escaláveis. No exemplo de "hello world" abaixo, muitas conexões podem ser tratadas simultaneamente. A cada conexão, a função callback é acionada, mas se não houver trabalho a ser feito, o Node.js entra em modo de espera. + +```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}/`); +}); +``` + +Isso contrasta com o modelo de concorrência mais comum hoje em dia, no qual os threads do sistema operacional são empregados. O uso de threads para redes é relativamente ineficiente e muito difícil de utilizar. Além disso, os usuários do Node.js não precisam se preocupar com deadlocks no processo, já que não existem bloqueios. Quase nenhuma função no Node.js realiza operações de I/O diretamente, portanto, o processo nunca bloqueia, exceto quando o I/O é realizada utilizando métodos síncronos da biblioteca padrão do Node.js. Como nada bloqueia, sistemas escaláveis são muito viáveis de serem desenvolvidos em Node.js. + +Se algum desses termos for desconhecido, há um artigo completo sobre chamadas [Bloqueantes vs. Não Bloqueante](/learn/asynchronous-work/overview-of-blocking-vs-non-blocking). + +--- + +O Node.js é semelhante em design a sistemas como o [Event Machine](https://github.com/eventmachine/eventmachine) do Ruby e o [Twisted](https://twisted.org/) do Python, e foi influenciado por esses sistemas. O Node.js leva o modelo de eventos um pouco além. Ele apresenta um loop de eventos como uma estrutura do ambiente de execução, em vez de como uma biblioteca. Em outros sistemas, sempre há uma chamada bloqueante para iniciar o loop de eventos. Normalmente, o comportamento é definido por meio de callbacks no início de um script, e no final, um servidor é iniciado por meio de uma chamada bloqueante como `EventMachine::run()`. No Node.js, não existe tal chamada para iniciar o loop de eventos. O Node.js simplesmente entra no loop de eventos após executar o script de entrada. O Node.js sai do loop de eventos quando não há mais callbacks a serem executados. Esse comportamento é semelhante ao JavaScript do navegador — o loop de eventos é oculto do usuário. + +O HTTP é um recurso de primeira classe no Node.js, projetado com foco em streaming e baixa latência em mente. Isso torna o Node.js muito adequado para servir a base de uma biblioteca ou framework web. + +O Node.js, embora projetado sem threads, não significa que você não possa aproveitar múltiplos núcleos no seu ambiente. Processos filhos podem ser gerados usando nossa API [`child_process.fork()`](https://nodejs.org/api/child_process.html), e são projetados para facilitar a comunicação. Baseado nessa mesma interface, está o módulo [`cluster`](https://nodejs.org/api/cluster.html), que permite compartilhar sockets entre processos para habilitar balanceamento de carga entre seus núcleos. + +## Recursos do Node.js Oficiais + +Para garantir autenticidade e segurança ao trabalhar com Node.js, sempre use recursos oficiais. Evite confiar em emails, binários, ou downloads de fontes não oficiais. + +### Domínios do Node.js Oficiais + +Para baixar os binários Node.js e acessar a documentação oficial, use apenas estes domínios: + +- [nodejs.org](https://nodejs.org) +- [nodejs.dev](https://nodejs.dev) _(Direciona para https://nodejs.org)_ +- [iojs.org](https://iojs.org) _(Direciona para https://nodejs.org)_ + +### Pacotes do npm Oficiais + +A equipe do Node.js mantém os seguintes escopos oficiais do pacote npm: + +- [`@node-core`](https://npmjs.com/~node-core) +- [`@pkgjs`](https://npmjs.com/~pkgjs) + +Além disso, a equipe do Node.js mantém pacotes publicados pela conta npm [`nodejs-foundation`](https://npmjs.com/~nodejs-foundation), embora outros pacotes relacionados ao Node.js como ([`undici`](https://www.npmjs.com/package/undici)) também possam ser mantidos por colaboradores intimamente ligados ao projeto. + +Usar pacotes da equipe do Node.js garante que você está trabalhando com componentes Node.js oficialmente suportados. + +### Organizações do Github Oficiais + +Node.js e projetos relacionados são mantidos nestas organizações oficiais no Github: + +- [nodejs](https://github.com/nodejs) +- [pkgjs](https://github.com/pkgjs) + +### Canais Oficiais de Comunicação + +Node.js e a Fundação OpenJS se comunicam através de vários canais oficiais e apoiados pela comunidade. Você pode encontrar detalhes de como se envolver na página [Participe](https://nodejs.org/en/about/get-involved). + +### Relatando problemas e indisponibilidade do site + +Se você encontrar problemas com o site do Node.js, reporte-os no [site do repositório do Node.js](https://github.com/nodejs/nodejs.org/issues). Para atualizações em tempo real sobre indisponibilidade, visite a [Página de status do Node.js](https://status.nodejs.org). diff --git a/apps/site/pages/pt-br/index.mdx b/apps/site/pages/pt-br/index.mdx new file mode 100644 index 0000000000000..e47afb933c53e --- /dev/null +++ b/apps/site/pages/pt-br/index.mdx @@ -0,0 +1,130 @@ +--- +title: Execute Javascript em Qualquer Lugar +layout: home +--- + +
+ + +
+

Execute JavaScript em Qualquer Lugar

+ + O Node.js® é um ambiente de execução JavaScript gratuito, de código aberto e multiplataforma, que permite aos desenvolvedores criar servidores, aplicativos web, ferramentas de linha de comando e scripts. + +
+ +
+
+ + + + + + +
+ +
+ + O Node.js é apoiado orgulhosamente pelos parceiros acima e outros. +
+ +
+
+ +
+
+ ```js displayName="Create an HTTP Server" + // server.mjs + import { createServer } from 'node:http'; + + const server = createServer((req, res) => { + res.writeHead(200, { 'Content-Type': 'text/plain' }); + res.end('Hello World!\n'); + }); + + // starts a simple http server locally on port 3000 + server.listen(3000, '127.0.0.1', () => { + console.log('Listening on 127.0.0.1:3000'); + }); + + // run with `node server.mjs` + ``` + + ```js displayName="Write Tests" + // tests.mjs + import assert from 'node:assert'; + import test from 'node:test'; + + test('that 1 is equal 1', () => { + assert.strictEqual(1, 1); + }); + + test('that throws as 1 is not equal 2', () => { + // throws an exception because 1 != 2 + assert.strictEqual(1, 2); + }); + + // run with `node tests.mjs` + ``` + + ```js displayName="Read and Hash a File" + // crypto.mjs + import { createHash } from 'node:crypto'; + import { readFile } from 'node:fs/promises'; + + const hasher = createHash('sha1'); + + hasher.setEncoding('hex'); + // ensure you have a `package.json` file for this test! + hasher.write(await readFile('package.json')); + hasher.end(); + + const fileHash = hasher.read(); + + // run with `node crypto.mjs` + ``` + + ```js displayName="Streams Pipeline" + // streams.mjs + import { createReadStream, createWriteStream } from 'node:fs'; + import { pipeline } from 'node:stream/promises'; + import { createGzip } from 'node:zlib'; + + // ensure you have a `package.json` file for this test! + await pipeline( + createReadStream('package.json'), + createGzip(), + createWriteStream('package.json.gz') + ); + + // run with `node streams.mjs` + ``` + + ```js displayName="Work with Threads" + // threads.mjs + import { Worker, isMainThread, + workerData, parentPort } from 'node:worker_threads'; + + if (isMainThread) { + const data = 'some data'; + const worker = new Worker(import.meta.filename, { workerData: data }); + worker.on('message', msg => console.log('Reply from Thread:', msg)); + } else { + const source = workerData; + parentPort.postMessage(btoa(source.toUpperCase())); + } + + // run with `node threads.mjs` + ``` + +
+ +Saiba mais sobre o que o Node.js pode oferecer com nosso [material de aprendizagem](/learn). + +
diff --git a/apps/site/pages/uk/about/partners.mdx b/apps/site/pages/uk/about/partners.mdx index 58b6300e049ed..6b26ad4ec4e3c 100644 --- a/apps/site/pages/uk/about/partners.mdx +++ b/apps/site/pages/uk/about/partners.mdx @@ -7,7 +7,7 @@ layout: about Спільнота Node.js має динамічну мережу партнерів, які долучаються до проєкту різноманітними способами. Завдяки такій співпраці ми підтримуємо нашу стійку інфраструктуру, посилюємо безпеку, створюємо нові релізи та допомагаємо нашій екосистемі зростати. -Ми вдячні за підтримку наших партнерів, які відіграють ключову роль в успіху та постійній розробці Node.js. +Ми вдячні за підтримку нашим партнерам, які відіграють ключову роль в успіху та постійній розробці Node.js. ## Інфраструктура diff --git a/apps/site/snippets/pt-br/download/brew.bash b/apps/site/snippets/pt-br/download/brew.bash new file mode 100644 index 0000000000000..413eca8b7833c --- /dev/null +++ b/apps/site/snippets/pt-br/download/brew.bash @@ -0,0 +1,5 @@ +# Baixar e instalar o Homebrew +curl -o- https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash + +# Baixar e instalar o Node.js: +brew install node@${props.release.major} diff --git a/apps/site/snippets/pt-br/download/choco.bash b/apps/site/snippets/pt-br/download/choco.bash new file mode 100644 index 0000000000000..17fbb136b7cdb --- /dev/null +++ b/apps/site/snippets/pt-br/download/choco.bash @@ -0,0 +1,5 @@ +# Baixar e instalar o Chocolatey: +powershell -c "irm https://community.chocolatey.org/install.ps1|iex" + +# Baixar e instalar o Node.js: +choco install nodejs --version="${props.release.version}" diff --git a/apps/site/snippets/pt-br/download/corepack.bash b/apps/site/snippets/pt-br/download/corepack.bash new file mode 100644 index 0000000000000..0543174e0bd8e --- /dev/null +++ b/apps/site/snippets/pt-br/download/corepack.bash @@ -0,0 +1,2 @@ +# Instalar Corepack: +npm install -g corepack diff --git a/apps/site/snippets/pt-br/download/devbox.bash b/apps/site/snippets/pt-br/download/devbox.bash new file mode 100644 index 0000000000000..755a056dc1628 --- /dev/null +++ b/apps/site/snippets/pt-br/download/devbox.bash @@ -0,0 +1,11 @@ +# Baixar e instalar o Devbox +curl -fsSL https://get.jetify.com/devbox | bash + +# Inicializar o Devbox no seu projeto +devbox init + +# Baixar e instalar o Node.js: +devbox add node@${props.release.major} + +# Abrir um shell do Devbox +devbox shell diff --git a/apps/site/snippets/pt-br/download/docker.bash b/apps/site/snippets/pt-br/download/docker.bash new file mode 100644 index 0000000000000..0a819b9fa5b25 --- /dev/null +++ b/apps/site/snippets/pt-br/download/docker.bash @@ -0,0 +1,8 @@ +# O Docker possui instruções específicas de instalação para cada sistema operacional. +# Consulte a documentação oficial em https://docker.com/get-started/ + +# Baixar a imagem Docker do Node.js: +docker pull node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} + +# Criar um contêiner do Node.js e iniciar uma sessão Shell: +docker run -it --rm --entrypoint sh node:${props.release.major}-${props.release.major >= 4 ? 'alpine' : 'slim'} diff --git a/apps/site/snippets/pt-br/download/fnm.bash b/apps/site/snippets/pt-br/download/fnm.bash new file mode 100644 index 0000000000000..f39bfb2d4784c --- /dev/null +++ b/apps/site/snippets/pt-br/download/fnm.bash @@ -0,0 +1,8 @@ +# Baixar e instalar o fnm: +${props.os === 'WIN' ? + 'winget install Schniz.fnm' : + 'curl -o- https://fnm.vercel.app/install | bash' +} + +# Baixar e instalar o Node.js: +fnm install ${props.release.major} diff --git a/apps/site/snippets/pt-br/download/n.bash b/apps/site/snippets/pt-br/download/n.bash new file mode 100644 index 0000000000000..7245b3a2706c1 --- /dev/null +++ b/apps/site/snippets/pt-br/download/n.bash @@ -0,0 +1,5 @@ +# Baixar e instalar n e Node.js: +curl -fsSL https://raw.githubusercontent.com/mklement0/n-install/stable/bin/n-install | bash -s ${props.release.major} + +# O Node.js já é instalado durante a instalação do n, mas você também pode instalá-lo manualmente: +# n instala ${props.release.major} diff --git a/apps/site/snippets/pt-br/download/node.bash b/apps/site/snippets/pt-br/download/node.bash new file mode 100644 index 0000000000000..6b2e9b5e94d68 --- /dev/null +++ b/apps/site/snippets/pt-br/download/node.bash @@ -0,0 +1,2 @@ +# Verifique a versão do Node.js: +node -v # Deve exibir "${props.release.versionWithPrefix}". diff --git a/apps/site/snippets/pt-br/download/npm.bash b/apps/site/snippets/pt-br/download/npm.bash new file mode 100644 index 0000000000000..475a0ec0b9021 --- /dev/null +++ b/apps/site/snippets/pt-br/download/npm.bash @@ -0,0 +1,2 @@ +# Verificar a versão do npm: +npm -v # Deve imprimir "${props.release.npm}". diff --git a/apps/site/snippets/pt-br/download/nvm.bash b/apps/site/snippets/pt-br/download/nvm.bash new file mode 100644 index 0000000000000..2f1cc7ea91516 --- /dev/null +++ b/apps/site/snippets/pt-br/download/nvm.bash @@ -0,0 +1,8 @@ +# Baixar e instalar o nvm: +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash + +# Carregar o nvm sem precisar reiniciar o shell +\. "$HOME/.nvm/nvm.sh" + +# Baixar e instalar o Node.js: +nvm install ${props.release.major} diff --git a/apps/site/snippets/pt-br/download/pnpm.bash b/apps/site/snippets/pt-br/download/pnpm.bash new file mode 100644 index 0000000000000..2e18df012abc9 --- /dev/null +++ b/apps/site/snippets/pt-br/download/pnpm.bash @@ -0,0 +1,5 @@ +# Baixar e instalar o pnpm: +corepack enable pnpm + +# Verificar a versão do pnpm: +pnpm -v diff --git a/apps/site/snippets/pt-br/download/volta.bash b/apps/site/snippets/pt-br/download/volta.bash new file mode 100644 index 0000000000000..f972c9451c8c8 --- /dev/null +++ b/apps/site/snippets/pt-br/download/volta.bash @@ -0,0 +1,8 @@ +# Na maioria dos sistemas de Unix, incluindo macOS, podemos instalar com um único comando: +${props.os === 'WIN' ? + 'winget install Volta.Volta' : + 'curl https://get.volta.sh | bash' +} + +# Baixar e instalar a Node.js: +volta install node@${props.release.major} diff --git a/apps/site/snippets/pt-br/download/yarn.bash b/apps/site/snippets/pt-br/download/yarn.bash new file mode 100644 index 0000000000000..522c1aaebd98a --- /dev/null +++ b/apps/site/snippets/pt-br/download/yarn.bash @@ -0,0 +1,5 @@ +# Baixar e instalar o Yarn: +corepack enable yarn + +# Verificar a versão do Yarn: +yarn -v diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 044a6808c1a47..0b0947fbeea4a 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@node-core/website-i18n", - "version": "1.1.10", + "version": "1.1.11", "type": "module", "exports": { "./*": [ diff --git a/packages/i18n/src/locales/fr.json b/packages/i18n/src/locales/fr.json index da743b98a64a1..0d3e7f071bbe8 100644 --- a/packages/i18n/src/locales/fr.json +++ b/packages/i18n/src/locales/fr.json @@ -301,7 +301,18 @@ "initErrorSearch": "Impossible d'initialiser le service de recherche", "initErrorChat": "Impossible d'initialiser le service de chat", "chatButtonLabel": "Obtenir un résumé de l'IA", - "searchButtonLabel": "Recherche" + "searchButtonLabel": "Recherche", + "poweredBy": "Produit par", + "suggestionOne": "Comment installer Node.js?", + "suggestionTwo": "Comment créer un serveur HTTP ?", + "suggestionThree": "Mise à niveau de la version Node.js", + "scrollToBottom": "Défiler vers le bas", + "closeChat": "Fermer la discussion", + "keyboardShortcuts": { + "select": "sélectionner", + "navigate": "naviguer", + "close": "fermer" + } }, "blog": { "blogHeader": { diff --git a/packages/i18n/src/locales/pt-br.json b/packages/i18n/src/locales/pt-br.json new file mode 100644 index 0000000000000..f13b6b4e217ea --- /dev/null +++ b/packages/i18n/src/locales/pt-br.json @@ -0,0 +1,403 @@ +{ + "components": { + "containers": { + "footer": { + "links": { + "openJSFoundation": "Fundação OpenJS", + "trademarkPolicy": "Política de Marca Registrada", + "privacyPolicy": "Política de Privacidade", + "codeOfConduct": "Código de Conduta", + "security": "Política de Segurança" + }, + "releasePills": { + "latestLTS": "LTS Mais Recente", + "latestRelease": "Versão Mais Recente" + } + }, + "navBar": { + "controls": { + "toggle": "Alternar menu de navegação" + }, + "links": { + "about": "Sobre", + "download": "Baixar", + "docs": "Documentação", + "guides": "Guias", + "learn": "Aprenda", + "security": "Segurança", + "certification": "Certificação", + "blog": "Blog", + "contribute": "Contribua" + } + } + }, + "navigation": { + "learn": { + "gettingStarted": { + "links": { + "gettingStarted": "Primeiros passos", + "introductionToNodejs": "Introdução ao Node.js", + "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "Quanto de JavaScript você precisa entender para usar Node.js?", + "differencesBetweenNodejsAndTheBrowser": "Diferenças entre Node.js e o Navegador", + "theV8JavascriptEngine": "O Motor JavaScript V8", + "anIntroductionToTheNpmPackageManager": "Uma introdução ao gerenciador de pacotes npm", + "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) e além", + "debugging": "Depuração no Node.js", + "fetch": "Buscando dados com Node.js", + "websocket": "Cliente WebSocket com Node.js", + "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js, a diferença entre desenvolvimento e produção", + "profiling": "Análise de Desempenho de Aplicações Node.js", + "nodejsWithWebassembly": "Node.js com WebAssembly", + "securityBestPractices": "Melhores Práticas de Segurança", + "userlandMigrations": "Introdução às Migrações Userland" + } + }, + "commandLine": { + "links": { + "commandLine": "Linha de Comando", + "runNodejsScriptsFromTheCommandLine": "Execute scripts Node.js pela linha de comando", + "howToUseTheNodejsRepl": "Como usar o REPL do Node.js", + "outputToTheCommandLineUsingNodejs": "Saída para a linha de comando usando Node.js", + "acceptInputFromTheCommandLineInNodejs": "Aceitar entrada da linha de comando no Node.js", + "howToReadEnvironmentVariablesFromNodejs": "Como ler variáveis de ambiente no Node.js" + } + }, + "http": { + "links": { + "http": "HTTP", + "anatomyOfAnHttpTransaction": "Anatomia de uma Transação HTTP" + } + }, + "manipulatingFiles": { + "links": { + "manipulatingFiles": "Manipulando Arquivos", + "nodejsFileStats": "Estatísticas de arquivos no Node.js", + "nodejsFilePaths": "Caminhos de Arquivo no Node.js", + "readingFilesWithNodejs": "Lendo arquivos com Node.js", + "writingFilesWithNodejs": "Escrevendo arquivos com Node.js", + "workingWithFileDescriptorsInNodejs": "Trabalhando com descritores de arquivo no Node.js", + "workingWithFoldersInNodejs": "Trabalhando com pastas no Node.js", + "workingWithDifferentFilesystems": "Como trabalhar com Diferentes Sistemas de Arquivos" + } + }, + "asynchronousWork": { + "links": { + "asynchronousWork": "Trabalho Assíncrono", + "javascriptAsynchronousProgrammingAndCallbacks": "Programação Assíncrona em JavaScript e Callbacks", + "asynchronousFlowControl": "Controle de fluxo assíncrono", + "discoverPromisesInNodejs": "Descubra Promises no Node.js", + "discoverJavascriptTimers": "Descubra os Temporizadores JavaScript", + "overviewOfBlockingVsNonBlocking": "Visão Geral de chamadas Bloqueante vs Não-Bloqueante", + "eventLoopTimersAndNexttick": "O Event Loop do Node.js", + "theNodejsEventEmitter": "O Event Emitter do Node.js", + "understandingProcessnexttick": "Entendendo process.nextTick()", + "understandingSetimmediate": "Entendendo setImmediate()", + "dontBlockTheEventLoop": "Não Bloqueie o Event Loop" + } + }, + "typescript": { + "links": { + "typescript": "TypeScript", + "introduction": "Introdução ao TypeScript", + "runNatively": "Executando TypeScript Nativamente", + "transpile": "Executando código TypeScript usando transpilação", + "run": "Executando TypeScript com um executor", + "publishingTSPackage": "Publicando um pacote TypeScript" + } + }, + "modules": { + "links": { + "modules": "Módulos", + "howToUseStreams": "Como usar streams", + "backpressuringInStreams": "Backpressuring em Streams", + "publishingAPackage": "Publicando um pacote", + "publishingNodeApiModules": "Como publicar um pacote Node-API", + "abiStability": "Estabilidade ABI" + } + }, + "diagnostics": { + "links": { + "diagnostics": "Diagnósticos", + "userJourney": "Jornada do Usuário", + "memory": "Memória", + "understandingAndTuningMemory": "Entendendo e Ajustando Memória", + "liveDebugging": "Depuração ao Vivo", + "poorPerformance": "Desempenho Ruim", + "flameGraphs": "Gráficos de Chama" + } + }, + "testRunner": { + "links": { + "testRunner": "Executor de Testes", + "introduction": "Descobrindo o executor de testes do Node.js", + "usingTestRunner": "Usando o executor de testes do Node.js", + "mocking": "Mocking em testes", + "collectingCodeCoverage": "Coletando cobertura de código no Node.js" + } + } + }, + "about": { + "links": { + "about": "Sobre o Node.js", + "aboutSide": "Sobre o Node.js®", + "branding": "Marca do Node.js", + "governance": "Governança do Projeto", + "releases": "Versões do Node.js", + "security": "Relatório de Segurança", + "partners": "Parceiros e Apoiadores", + "eol": "Fim de Vida Útil (EOL)" + } + }, + "getInvolved": { + "links": { + "getInvolved": "Participe", + "collabSummit": "Cúpula de Colaboração", + "upcomingEvents": "Próximos Eventos", + "contribute": "Contribuir para o Node.js", + "codeOfConduct": "Código de Conduta" + } + } + }, + "downloadReleasesTable": { + "version": "Node.js", + "nApiVersion": "N-API", + "codename": "Codinome", + "releaseDate": "Lançado em", + "firstReleased": "Primeiro lançamento", + "lastUpdated": "Última atualização", + "status": "Status", + "details": "Detalhes" + }, + "downloadsTable": { + "fileName": "Nome do Arquivo", + "operatingSystem": "SO", + "architecture": "Arquitetura" + }, + "releaseModal": { + "title": "Node.js v{version} ({codename})", + "titleWithoutCodename": "Node.js v{version}", + "overview": "Visão Geral", + "minorVersions": "Versões menores", + "releaseAnnouncement": "Anúncio do Lançamento", + "unsupportedVersionWarning": "Esta versão não está sendo mantida. Por favor, use uma versão com suporte. Entenda o suporte EOL.", + "ltsVersionFeaturesNotice": "Quer novos recursos mais cedo? Obtenha a versão mais recente do Node.js e experimente as últimas melhorias!" + }, + "eolAlert": { + "message": "Suporte comercial para versões após a fase de LTS de Manutenção está disponível através dos nossos parceiros do Programa de Sustentabilidade do Ecossistema OpenJS" + }, + "eolChip": { + "severity": { + "unknown": "Desconhecida", + "low": "Baixa", + "medium": "Média", + "high": "Alta", + "critical": "Crítica" + } + }, + "eolModal": { + "title": "Node.js v{version} ({codename}) atingiu EOL", + "titleWithoutCodename": "Node.js v{version} atingiu EOL", + "vulnerabilitiesMessage": "Existem {count}+ problemas de segurança conhecidos (Common Vulnerabilities and Exposures ou CVEs) associados a esta versão do Node.js. CVEs são identificadores para falhas de segurança relatadas publicamente. Clicar em um link CVE levará você a detalhes mais técnicos, como o funcionamento da vulnerabilidade.", + "noVulnerabilitiesMessage": "Atualmente não há CVEs (Common Vulnerabilities and Exposures) conhecidas associadas a esta versão do Node.js. No entanto, isso não significa que seja completamente segura - algumas vulnerabilidades podem ainda não ter sido descobertas ou divulgadas publicamente. Se esta versão estiver desatualizada ou sem suporte, ainda é uma boa ideia considerar a atualização para garantir que você se beneficie das últimas correções e melhorias de segurança.", + "blogLinkText": "Blog", + "showUnknownSeverities": "Mostrar vulnerabilidades de gravidade desconhecida", + "table": { + "cves": "CVE(s)", + "severity": "Severidade", + "overview": "Visão geral", + "details": "Detalhes" + } + }, + "eolTable": { + "version": "Versão", + "codename": "Codinome", + "releaseDate": "Lançado em", + "lastUpdated": "Última atualização", + "vulnerabilities": "Vulnerabilidades", + "details": "Detalhes" + }, + "minorReleasesTable": { + "version": "Versão", + "links": "Links", + "nApiVersion": "Versão N-API", + "npmVersion": "Versão npm", + "v8Version": "Versão V8", + "actions": { + "release": "Lançamento", + "changelog": "Changelog", + "docs": "Documentação" + } + }, + "releaseOverview": { + "firstReleased": "Primeiro lançamento", + "lastUpdated": "Última atualização", + "minorVersions": "Versões menores", + "nApiVersion": "Versão N-API", + "npmVersion": "Versão npm", + "v8Version": "Versão V8" + }, + "pagination": { + "next": "Próximo", + "previous": "Anterior" + }, + "common": { + "alertBox": { + "info": "Informação", + "warning": "Aviso", + "danger": "Perigo" + }, + "breadcrumbs": { + "navigateToHome": "Navegar para a Página Inicial" + }, + "crossLink": { + "previous": "Anterior", + "next": "Próximo" + }, + "codebox": { + "copy": "Copiar para a área de transferência", + "copied": "Copiado para a área de transferência!" + }, + "pagination": { + "prev": "Anterior", + "prevAriaLabel": "Página anterior", + "next": "Próximo", + "nextAriaLabel": "Próxima página", + "defaultLabel": "Paginação", + "pageLabel": "Ir para a página {pageNumber}" + }, + "sidebar": { + "title": "Mudar de página" + }, + "languageDropdown": { + "label": "Escolher Idioma" + }, + "themeToggle": { + "light": "Mudar para Modo Claro", + "dark": "Mudar para Modo Escuro" + } + }, + "metabar": { + "lastUpdated": "Última Atualização", + "readingTime": "Tempo de Leitura", + "addedIn": "Adicionado Em", + "author": "Autor", + "authors": "Autores", + "contribute": "Contribuir", + "contributeText": "Editar esta página", + "viewAs": "Visualizar como", + "tableOfContents": "Índice" + }, + "search": { + "searchPlaceholder": "Comece a digitar...", + "chatPlaceholder": "Me pergunte qualquer coisa", + "noResultsFoundFor": "Nenhum resultado encontrado para", + "suggestions": "Sugestões", + "seeAll": "Ver tudo", + "addMore": "Adicionar mais", + "clearChat": "Limpar chat", + "errorMessage": "Ocorreu um erro ao tentar pesquisar. Por favor, tente novamente.", + "disclaimer": "Resumos de IA podem cometer erros. Por favor, verifique as informações.", + "startYourSearch": "Inicie sua pesquisa", + "initErrorSearch": "Não foi possível inicializar o serviço de pesquisa", + "initErrorChat": "Não foi possível inicializar o serviço de chat", + "chatButtonLabel": "Obter um resumo de IA", + "searchButtonLabel": "Pesquisar", + "poweredBy": "Fornecido por", + "suggestionOne": "Como instalar Node.js?", + "suggestionTwo": "Como criar um servidor HTTP?", + "suggestionThree": "Atualizando a versão do Node.js", + "scrollToBottom": "Rolar para o final", + "closeChat": "Fechar chat", + "keyboardShortcuts": { + "select": "para selecionar", + "navigate": "para navegar", + "close": "para fechar" + } + }, + "blog": { + "blogHeader": { + "subtitle": "As últimas notícias do Node.js, guias de migração e resumos de eventos", + "rssLink": "Feed RSS" + } + } + }, + "layouts": { + "blogPost": { + "author": { + "byLine": "{author, select, null {} other {Por {author}, }}" + } + }, + "blogIndex": { + "categoryName": "{category, select, all {Blog} other {Posts do Blog de {category}}}" + }, + "blog": { + "title": "Blog", + "selectCategory": "Categorias", + "categories": { + "all": "Tudo", + "announcements": "Anúncios", + "release": "Lançamentos", + "vulnerability": "Vulnerabilidades", + "advisory-board": "Conselho Consultivo", + "community": "Comunidade", + "feature": "Feature", + "module": "Módulo", + "npm": "npm", + "uncategorized": "Sem Categoria", + "video": "Vídeo", + "weekly": "Atualizações Semanais", + "wg": "Grupos de Trabalho", + "migrations": "Guias de Migração", + "events": "Eventos" + } + }, + "error": { + "notFound": { + "title": "Página não encontrada", + "description": "Desculpe, não conseguimos encontrar a página que você procura! Tente começar novamente pela página inicial." + }, + "internalServerError": { + "title": "Erro Interno do Servidor", + "description": "Esta página lançou um erro não recuperável." + }, + "backToHome": "Voltar para a Página Inicial" + }, + "download": { + "buttons": { + "installer": "Instalador {os} (.{extension})", + "binary": "Binário Independente (.{extension})" + }, + "dropdown": { + "platform": "Plataforma", + "os": "Sistema Operacional", + "version": "Versão", + "installMethod": "Método de Instalação", + "packageManager": "Gerenciador de Pacotes", + "unknown": "Desconhecido", + "platformGroups": { + "official": "Recomendado (Oficial)", + "unofficial": "Comunidade (Não Oficial)" + } + }, + "codeBox": { + "unsupportedVersionWarning": "Esta versão não está sendo mantida. Por favor, use uma versão com suporte. Entenda o suporte EOL.", + "ltsVersionFeaturesNotice": "Quer novos recursos mais cedo? Obtenha a versão mais recente do Node.js e experimente as últimas melhorias!", + "communityPlatformInfo": "Métodos de instalação que envolvem software da comunidade são suportados pelas equipes que mantêm esse software.", + "externalSupportInfo": "Se você encontrar algum problema, por favor visite o site do {platform}", + "noScriptDetected": "Esta página requer JavaScript. Você pode baixar o Node.js sem JavaScript visitando diretamente a página de arquivo de downloads.", + "platformInfo": { + "default": "{platform} e seus scripts de instalação não são mantidos pelo projeto Node.js.", + "nvm": "\"nvm\" é um gerenciador de versões do Node.js multiplataforma.", + "fnm": "\"fnm\" é um gerenciador de versões do Node.js multiplataforma.", + "brew": "Homebrew é um gerenciador de pacotes para macOS e Linux.", + "choco": "Chocolatey é um gerenciador de pacotes para Windows.", + "devbox": "Devbox cria ambientes de desenvolvimento isolados e reproduzíveis.", + "docker": "Docker é uma plataforma de conteinerização.", + "n": "\"n\" é um gerenciador de versões do Node.js multiplataforma.", + "volta": "\"Volta\" é um gerenciador de versões do Node.js multiplataforma." + } + } + }, + "logo": "Logo do Node.js" + } +}