From e485e7db8e5d56bc87239235d9e16f8d1e855de3 Mon Sep 17 00:00:00 2001
From: Yan Thomas <61414485+Yan-Thomas@users.noreply.github.com>
Date: Sat, 26 Aug 2023 21:07:48 -0300
Subject: [PATCH 1/9] i18n(pt-BR): Translate `upgrade-to/v3` and update smaller
3.0 changes
---
src/content/docs/pt-br/concepts/why-astro.mdx | 2 +-
.../docs/pt-br/core-concepts/endpoints.mdx | 109 ++--
.../pt-br/core-concepts/project-structure.mdx | 4 -
.../docs/pt-br/guides/content-collections.mdx | 13 +-
.../docs/pt-br/guides/deploy/netlify.mdx | 2 +-
.../docs/pt-br/guides/deploy/render.mdx | 2 +-
.../docs/pt-br/guides/deploy/vercel.mdx | 2 +-
.../docs/pt-br/guides/integrations-guide.mdx | 10 +-
.../docs/pt-br/guides/markdown-content.mdx | 58 +-
src/content/docs/pt-br/guides/middleware.mdx | 4 +-
src/content/docs/pt-br/guides/rss.mdx | 10 +-
.../pt-br/guides/server-side-rendering.mdx | 4 +-
src/content/docs/pt-br/guides/styling.mdx | 32 +-
.../docs/pt-br/guides/troubleshooting.mdx | 4 +-
.../docs/pt-br/guides/upgrade-to/v3.mdx | 607 ++++++++++++++++++
src/content/docs/pt-br/install/auto.mdx | 2 +-
src/content/docs/pt-br/install/manual.mdx | 2 +-
.../docs/pt-br/recipes/call-endpoints.mdx | 8 +-
.../docs/pt-br/reference/api-reference.mdx | 26 +-
.../pt-br/reference/directives-reference.mdx | 8 +-
.../docs/pt-br/reference/error-reference.mdx | 1 +
.../errors/expected-image-options.mdx | 2 +-
.../pt-br/reference/errors/expected-image.mdx | 2 +-
.../reference/errors/image-missing-alt.mdx | 6 +-
.../errors/markdown-image-not-found.mdx | 2 +-
.../errors/missing-image-dimension.mdx | 4 +-
.../errors/static-redirect-not-available.mdx | 4 +-
.../errors/unsupported-image-format.mdx | 4 +-
28 files changed, 743 insertions(+), 191 deletions(-)
create mode 100644 src/content/docs/pt-br/guides/upgrade-to/v3.mdx
diff --git a/src/content/docs/pt-br/concepts/why-astro.mdx b/src/content/docs/pt-br/concepts/why-astro.mdx
index 580558e9a4b19..b7a38ebfe64b3 100644
--- a/src/content/docs/pt-br/concepts/why-astro.mdx
+++ b/src/content/docs/pt-br/concepts/why-astro.mdx
@@ -74,6 +74,6 @@ Um dos nossos provérbios favoritos é: **opte por mais complexidade.** Nós fiz
**Astro é um framework web tudo em um que vem com tudo o que você precisa para construir um website.** Astro inclui uma sintaxe de componentes, roteamento baseado em arquivos, manipulação de assetes, processo de build, bundling, otimizações, busca de dados e mais. Você pode construir ótimos websites sem se aproximar de funcionalidades fora do núcleo do Astro.
-Se você precisar de mais controle, você pode expandir o Astro com [+100 integrações](https://astro.build/integrations/) como [React](https://www.npmjs.com/package/@astrojs/react), [Svelte](https://www.npmjs.com/package/@astrojs/svelte), [Vue](https://www.npmjs.com/package/@astrojs/vue), [Tailwind CSS](https://www.npmjs.com/package/@astrojs/tailwind), [MDX](https://www.npmjs.com/package/@astrojs/mdx), [otimização de imagens](https://www.npmjs.com/package/@astrojs/image) e mais. [Conectar o seu CMS favorito](/pt-br/guides/cms/) ou [fazer deploy para seu host favorito](/pt-br/guides/deploy/) com apenas um comando.
+Se você precisar de mais controle, você pode expandir o Astro com [+100 integrações](https://astro.build/integrations/) como [React](https://www.npmjs.com/package/@astrojs/react), [Svelte](https://www.npmjs.com/package/@astrojs/svelte), [Vue](https://www.npmjs.com/package/@astrojs/vue), [Tailwind CSS](https://www.npmjs.com/package/@astrojs/tailwind), [MDX](https://www.npmjs.com/package/@astrojs/mdx) e mais. [Conectar o seu CMS favorito](/pt-br/guides/cms/) ou [fazer deploy para seu host favorito](/pt-br/guides/deploy/) com apenas um comando.
Astro é agnóstico a UI, o que significa que você pode **Trazer o seu Próprio Framework de UI (BYOF, do inglês, "Bring Your Own Ui Framework")**. React, Preact, Solid, Svelte, Vue e Lit são todos oficialmente suportados no Astro. Você pode até misturar diferentes frameworks na mesma página, fazendo migrações futuras mais fáceis e prevenindo que você fique preso a um único framework.
diff --git a/src/content/docs/pt-br/core-concepts/endpoints.mdx b/src/content/docs/pt-br/core-concepts/endpoints.mdx
index c99826d2e6cd2..2ce3132a95984 100644
--- a/src/content/docs/pt-br/core-concepts/endpoints.mdx
+++ b/src/content/docs/pt-br/core-concepts/endpoints.mdx
@@ -17,27 +17,22 @@ Seus endpoints devem exportar uma função `get` (opcionalmente assíncrona) que
```ts
// Exemplo: src/pages/builtwith.json.ts
// Se tornará: /builtwith.json
-export async function get({params, request}) {
- return {
- body: JSON.stringify({
+export async function GET({params, request}) {
+ return new Response(
+ JSON.stringify({
name: 'Astro',
- url: 'https://astro.build/',
- }),
- };
+ url: 'https://astro.build/'
+ })
+ )
}
```
O objeto retornado também pode conter a propriedade `encoding`. Ela deve ser uma string válida do tipo [`BufferEncoding`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/bdd02508ddb5eebcf701fdb8ffd6e84eabf47885/types/node/buffer.d.ts#L169) aceita pelo método `fs.writeFile` do Node.js. Por exemplo, para gerar uma imagem no formato png retornamos:
```ts title="src/pages/builtwith.json.ts" {6}
-export async function get({ params, request }) {
+export async function GET({ params, request }) {
const response = await fetch("https://docs.astro.build/assets/full-logo-light.png");
- const buffer = Buffer.from(await response.arrayBuffer());
- return {
- body: buffer,
- encoding: 'binary',
- };
-};
+ return new Response(await response.arrayBuffer());
```
Também é possível adicionar validação de tipo à sua função com o tipo `APIRoute`:
@@ -45,8 +40,7 @@ Também é possível adicionar validação de tipo à sua função com o tipo `A
```ts
import type { APIRoute } from 'astro';
-export const get: APIRoute = async ({ params, request }) => {
-...
+export const GET: APIRoute = async ({ params, request }) => {...}
```
### Roteamento dinâmico e a propriedade `params`
@@ -58,16 +52,16 @@ import type { APIRoute } from 'astro';
const usuarios = ["Sarah", "Chris", "Dan"]
-export const get: APIRoute = ({ params, request }) => {
+export const GET: APIRoute = ({ params, request }) => {
const id = params.id;
- return {
- body: JSON.stringify({
+ return new Response(
+ JSON.stringify({
name: usuarios[id]
})
- }
-};
+ )
+}
-export function getStaticPaths () {
+export function getStaticPaths() {
return [
{ params: { id: "0"} },
{ params: { id: "1"} },
@@ -84,12 +78,11 @@ Todos os endpoints recebem uma propriedade `request`, porém no modo estático v
```ts title="src/pages/request-path.json.ts"
import type { APIRoute } from 'astro';
-export const get: APIRoute = ({ params, request }) => {
- return {
- body: JSON.stringify({
+export const GET: APIRoute = ({ params, request }) => {
+ return new Response(JSON.stringify({
path: new URL(request.url).pathname
})
- };
+ )
}
```
@@ -109,7 +102,7 @@ Os endpoints do servidor tem acesso a propriedade `params` sem exportar a funç
```js title="src/pages/[id].json.js"
import { getProduct } from '../db';
-export async function get({ params }) {
+export async function GET({ params }) {
const id = params.id;
const product = await getProduct(id);
@@ -120,12 +113,14 @@ export async function get({ params }) {
});
}
- return new Response(JSON.stringify(product), {
- status: 200,
- headers: {
- "Content-Type": "application/json"
+ return new Response(
+ JSON.stringify(product), {
+ status: 200,
+ headers: {
+ "Content-Type": "application/json"
+ }
}
- });
+ );
}
```
@@ -134,7 +129,7 @@ Esse código responderá a qualquer requisição que corresponda à rota dinâmi
No modo SSR, certos provedores requerem que o cabeçalho `Content-Type` retorne uma imagem. Neste caso, utilize um objeto `Response` para especificar uma propriedade `headers`. Por exemplo, para produzir uma imagem `.png` binária:
```ts title="src/pages/astro-logo.png.ts"
-export async function get({ params, request }) {
+export async function GET({ params, request }) {
const response = await fetch("https://docs.astro.build/assets/full-logo-light.png");
const buffer = Buffer.from(await response.arrayBuffer());
return new Response(buffer, {
@@ -144,45 +139,37 @@ export async function get({ params, request }) {
```
### Métodos HTTP
-Além da função `get`, você pode exportar uma função com o nome de qualquer [método HTTP](https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Methods). Assim, quando uma requisição for recebida, o Astro irá checar o método e chamar a função correspondente.
+Além da função `GET`, você pode exportar uma função com o nome de qualquer [método HTTP](https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Methods). Assim, quando uma requisição for recebida, o Astro irá checar o método e chamar a função correspondente.
-Também é possível exportar uma função `all` para corresponder a todos os métodos que já não tenham suas respectivas funções exportadas. Se houver uma requisição sem método correspondente, ela será redirecionada para a sua [página de 404](/pt-br/core-concepts/astro-pages/#página-customizada-de-erro-404).
-
-:::note
-Como `delete` é uma palavra reservada do JavaScript, exporte uma função chamada `del` para corresponder ao método delete.
-:::
+Também é possível exportar uma função `ALL` para corresponder a todos os métodos que já não tenham suas respectivas funções exportadas. Se houver uma requisição sem método correspondente, ela será redirecionada para a sua [página de 404](/pt-br/core-concepts/astro-pages/#página-customizada-de-erro-404).
```ts title="src/pages/methods.json.ts"
-export const get: APIRoute = ({ params, request }) => {
- return {
- body: JSON.stringify({
- message: "Método GET"
+export const GET: APIRoute = ({ params, request }) => {
+ return new Response(JSON.stringify({
+ message: "Isso foi um GET!"
})
- }
-};
+ )
+}
-export const post: APIRoute = ({ request }) => {
- return {
- body: JSON.stringify({
- message: "Método POST!"
+export const POST: APIRoute = ({ request }) => {
+ return new Response(JSON.stringify({
+ message: "Isso foi um POST!"
})
- }
+ )
}
-export const del: APIRoute = ({ request }) => {
- return {
- body: JSON.stringify({
- message: "Método DELETE!"
+export const DELETE: APIRoute = ({ request }) => {
+ return new Response(JSON.stringify({
+ message: "Isso foi um DELETE!"
})
- }
+ )
}
-export const all: APIRoute = ({ request }) => {
- return {
- body: JSON.stringify({
- message: `Método ${request.method}!`
+export const ALL: APIRoute = ({ request }) => {
+ return new Resonse(JSON.stringify({
+ message: `Isso foi um ${request.method}!`
})
- }
+ )
}
```
@@ -192,7 +179,7 @@ export const all: APIRoute = ({ request }) => {
No modo SSR, a propriedade `request` retorna um objeto [`Request`](https://developer.mozilla.org/pt-BR/docs/Web/API/Request) completamente utilizável que se refere a requisição atual. Isso permite que você aceite dados e cheque cabeçalhos:
```ts title="src/pages/test-post.json.ts"
-export const post: APIRoute = async ({ request }) => {
+export const POST: APIRoute = async ({ request }) => {
if (request.headers.get("Content-Type") === "application/json") {
const body = await request.json();
const name = body.name;
@@ -212,7 +199,7 @@ O contexto do endpoint exporta um utilitário `redirect()` similar ao `Astro.red
```js title="src/pages/links/[id].js" {14}
import { getLinkUrl } from '../db';
-export async function get({ params, redirect }) {
+export async function GET({ params, redirect }) {
const { id } = params;
const link = await getLinkUrl(id);
diff --git a/src/content/docs/pt-br/core-concepts/project-structure.mdx b/src/content/docs/pt-br/core-concepts/project-structure.mdx
index 27ef7e458b90d..18c5c996e66d8 100644
--- a/src/content/docs/pt-br/core-concepts/project-structure.mdx
+++ b/src/content/docs/pt-br/core-concepts/project-structure.mdx
@@ -66,10 +66,6 @@ Alguns arquivos (como componentes Astro) nem sequer são enviados ao navegador c
Enquanto esse guia descreve algumas convenções populares usadas na comunidade do Astro, as únicas pastas reservadas pelo Astro são `src/pages/` e `src/content`. Você é livre para renomear e reorganizar quaisquer outras pastas de uma forma que funciona melhor para você.
:::
-### `src/assets`
-
-A pasta [`src/assets`](/pt-br/guides/assets/) é a pasta recomendada para armazenar assets (e.x. imagens) a serem processados pelo Astro. Isso não é obrigatório, e esta não é uma pasta especial reservada.
-
### `src/components`
**Componentes** são pedaços reutilizáveis de código para suas páginas HTML. Eles podem ser [componentes Astro](/pt-br/core-concepts/astro-components/) ou [componentes de frameworks de UI](/pt-br/core-concepts/framework-components/) como React ou Vue. É comum agrupar e organizar todos os componentes do seu projeto nesta pasta.
diff --git a/src/content/docs/pt-br/guides/content-collections.mdx b/src/content/docs/pt-br/guides/content-collections.mdx
index b03443ff35896..5e5812fd242ce 100644
--- a/src/content/docs/pt-br/guides/content-collections.mdx
+++ b/src/content/docs/pt-br/guides/content-collections.mdx
@@ -395,6 +395,17 @@ const entradasPublicadasBlog = await getCollection('blog', ({ data }) => {
});
```
+
+Você também pode criar páginas de rascunho que são disponibilizadas ao executar o servidor de desenvolvimento, mas não são construídas em produção:
+
+```js
+// Exemplo: Filtrar entradas de conteúdo com `draft: true` apenas ao fazer build para produção
+import { getCollection } from 'astro:content';
+const entradasBlog = await getCollection('blog', ({ data }) => {
+ return import.meta.env.PROD ? data.draft !== true : true;
+});
+```
+
O argumento de filtragem também suporta filtragem por pastas aninhadas dentro de uma coleção. Já que o `id` inclui o caminho aninhado completo, você pode filtrar pelo começo de cada `id` para retornar somente itens de uma pasta aninhada específica:
```js
@@ -706,7 +717,7 @@ Esse guia mostra como converter um projeto com Astro existente com arquivos Mark
import rss from "@astrojs/rss";
import { getCollection } from "astro:content";
- export async function get() {
+ export async function GET() {
const postagens = await getCollection('postagens');
return rss({
title: 'Astro Learner | Blog',
diff --git a/src/content/docs/pt-br/guides/deploy/netlify.mdx b/src/content/docs/pt-br/guides/deploy/netlify.mdx
index d1cbd2cb2b307..03697ed085763 100644
--- a/src/content/docs/pt-br/guides/deploy/netlify.mdx
+++ b/src/content/docs/pt-br/guides/deploy/netlify.mdx
@@ -121,7 +121,7 @@ Você também pode criar um site na Netlify e vincular o seu repositório Git in
### Defina uma versão do Node.js
-Se você está usando uma [imagem de build](https://docs.netlify.com/configure-builds/get-started/#build-image-selection) legada (Xenial) na Netlify, certifique-se de que a versão do Node.js está definida. Astro requer `v16.12.0` ou superior.
+Se você está usando uma [imagem de build](https://docs.netlify.com/configure-builds/get-started/#build-image-selection) legada (Xenial) na Netlify, certifique-se de que a versão do Node.js está definida. Astro requer `v18.14.1` ou superior.
Você pode [especificar a versão do Node.js na Netlify](https://docs.netlify.com/configure-builds/manage-dependencies/#node-js-and-javascript) usando:
- um arquivo [`.nvmrc`](https://github.com/nvm-sh/nvm#nvmrc) em seu diretório base.
diff --git a/src/content/docs/pt-br/guides/deploy/render.mdx b/src/content/docs/pt-br/guides/deploy/render.mdx
index 934edb6b16e92..c05b44a1d9765 100644
--- a/src/content/docs/pt-br/guides/deploy/render.mdx
+++ b/src/content/docs/pt-br/guides/deploy/render.mdx
@@ -15,5 +15,5 @@ Você pode fazer deploy do seu projeto Astro no [Render](https://render.com/), u
4. Dê um nome ao seu site, selecione a branch e especifique o comando de build e diretório de publicação
- **build command:** `npm run build`
- **publish directory:** `dist`
- - **Environment variables (advanced)**: Por padrão, o Render utiliza Node.js 14.17.0, mas o Astro [requer uma versão maior](/pt-br/install/auto/#pré-requisitos). Adicione uma variável de ambiente com uma **Variable key** de `NODE_VERSION` e um **Value** de `16.12.0` ou maior para instruir o Render a usar uma versão compatível do Node.js. Alternativamente, adicione um arquivo [`.node-version`](https://render.com/docs/node-version) ou [`.nvmrc`](https://render.com/docs/node-version) em seu projeto para especificar uma versão do Node.js.
+ - **Environment variables (advanced)**: Por padrão, o Render utiliza Node.js 14.17.0, mas o Astro [requer uma versão maior](/pt-br/install/auto/#pré-requisitos). Adicione uma variável de ambiente com uma **Variable key** de `NODE_VERSION` e um **Value** de `18.14.1` ou maior para instruir o Render a usar uma versão compatível do Node.js. Alternativamente, adicione um arquivo [`.node-version`](https://render.com/docs/node-version) ou [`.nvmrc`](https://render.com/docs/node-version) em seu projeto para especificar uma versão do Node.js.
5. Clique no botão **Create Static Site**
diff --git a/src/content/docs/pt-br/guides/deploy/vercel.mdx b/src/content/docs/pt-br/guides/deploy/vercel.mdx
index fe505b5665004..4e3dbafaa9d9e 100644
--- a/src/content/docs/pt-br/guides/deploy/vercel.mdx
+++ b/src/content/docs/pt-br/guides/deploy/vercel.mdx
@@ -84,4 +84,4 @@ Você pode utilizar `vercel.json` para sobrescrever o comportamento padrão da V
### Atualizando para Astro 2.0
-Astro v2.0 remove suporte para Node 14, então certifique-se de que seu projeto está utilizando **Node `16.12.0` ou maior**. Você pode [definir a versão do Node.js](https://vercel.com/changelog/node-js-version-now-customizable-in-the-project-settings) usada durante a Etapa de Build e Funções Serverless pela página "General" em "Project Settings".
+Astro v2.0 remove suporte para Node 14, então certifique-se de que seu projeto está utilizando **Node `18.14.1` ou maior**. Você pode [definir a versão do Node.js](https://vercel.com/changelog/node-js-version-now-customizable-in-the-project-settings) usada durante a Etapa de Build e Funções Serverless pela página "General" em "Project Settings".
diff --git a/src/content/docs/pt-br/guides/integrations-guide.mdx b/src/content/docs/pt-br/guides/integrations-guide.mdx
index bc1dc1933f289..8b9e3c79b15c8 100644
--- a/src/content/docs/pt-br/guides/integrations-guide.mdx
+++ b/src/content/docs/pt-br/guides/integrations-guide.mdx
@@ -126,17 +126,17 @@ Para remover uma integração, primeiro desinstale a integração do seu projeto