Skip to content

Commit

Permalink
i18n(pt-BR): Small updates to a bunch of pages (withastro#1236)
Browse files Browse the repository at this point in the history
* Update a bunch of PT-BR pages

* Update `aliases.md`
  • Loading branch information
yanthomasdev authored Aug 12, 2022
1 parent 163b712 commit 8ef85e2
Show file tree
Hide file tree
Showing 9 changed files with 89 additions and 72 deletions.
17 changes: 8 additions & 9 deletions src/pages/pt-br/guides/aliases.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,8 @@ Um **alias** é uma maneira de criar atalhos para as suas importações.

Atalhos podem ajudar a melhorar a experiência de desenvolvimento em bases de código com muitos diretórios ou importações relativas.

```astro
```astro title="src/pages/sobre/empresa.astro" del="../../components" del="../../assets"
---
// meu-projeto/src/pages/sobre/empresa.astro
import Botao from '../../components/controles/Botao.astro';
import logoUrl from '../../assets/logo.png?url';
---
Expand All @@ -22,28 +20,29 @@ Neste exemplo, um desenvolvedor precisaria entender a árvore de relação entre

Você pode adicionar um atalho de importação em `tsconfig.json` ou `jsconfig.json`.

```json
```json title="tsconfig.json" ins={5-6}
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@assets/*": ["src/assets/*"],
"@components/*": ["src/components/*"],
"@assets/*": ["src/assets/*"]
}
}
}
```

:::note
Certifique-se de que `compilerOptions.baseUrl` foi definido para que assim os caminhos com aliases sejam resolvidos.
:::

Com esta alteração, você pode usar o atalho para importar seus arquivos em qualquer lugar do projeto:

```astro
```astro title="src/pages/sobre/empresa.astro" ins="@components" ins="@assets"
---
// meu-projeto/src/pages/sobre/empresa.astro
import Botao from '@components/Botao.astro';
import logoUrl from '@assets/logo.png';
---
```

Estes atalhos são automaticamente integrados ao [VSCode](https://code.visualstudio.com/docs/languages/jsconfig) e a outros editores.
Estes atalhos são automaticamente integrados ao [VS Code](https://code.visualstudio.com/docs/languages/jsconfig) e a outros editores.
34 changes: 23 additions & 11 deletions src/pages/pt-br/guides/configuring-astro.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ export default defineConfig({
})
```

Usar `defineConfig()` é recomendado para dicas de tipagem automáticas, mas é opcional. Uma configuração mínima válida se pareceria com algo assim:
Usar `defineConfig()` é recomendado para dicas de tipagem automáticas na sua IDE porém também é opcional. Uma configuração mínima válida se pareceria com algo assim:

```js
```js title="astro.config.mjs"
// Exemplo: Configuração mínima, um arquivo vazio
export default {}
```
Expand All @@ -38,7 +38,7 @@ O arquivo de configuração TypeScript é gerenciado usando o [`tsm`](https://gi

## Resolução do Arquivo de Configuração

Astro irá tentar buscar automaticamente um arquivo de configuração com o nome `astro.config.mjs` na raíz de seu projeto. Se nenhum arquivo for encontrado, as opções padrão do Astro serão utilizadas.
Astro irá tentar buscar automaticamente um arquivo de configuração com o nome `astro.config.mjs` na raiz de seu projeto. Se nenhum arquivo for encontrado, as opções padrão do Astro serão utilizadas.

```bash
# Exemplo: Lê sua configuração em ./astro.config.mjs
Expand All @@ -52,11 +52,11 @@ Você pode passar o arquivo de configuração explicitamente usando a opção `-
astro build --config minha-configuracao.js
```

## Intellisense da Configuração
## IntelliSense da Configuração

Astro recomenda o uso da função auxiliar `defineConfig()` em seu arquivo de configuração. `defineConfig()` proporciona Intellisense automático em sua IDE. Editores como VSCode são capazes de ler as definições TypeScript do Astro e providencia dicas de tipagem JSDoc automáticas, mesmo que seu arquivo de configuração não esteja escrito em TypeScript.
Astro recomenda o uso da função auxiliar `defineConfig()` em seu arquivo de configuração. `defineConfig()` proporciona IntelliSense automático em sua IDE. Editores como VSCode são capazes de ler as definições de tipo TypeScript do Astro e providencia dicas de tipagem JSDoc automáticas, mesmo que seu arquivo de configuração não esteja escrito em TypeScript.

```js
```js
// astro.config.mjs
import { defineConfig } from 'astro/config'

Expand All @@ -81,26 +81,35 @@ export default /** @type {import('astro').AstroUserConfig} */ ({
Se você providenciar um caminho relativo à opção `root` ou passar a opção `--root` da interface de linha de comando, Astro irá resolver os arquivos de acordo com o diretório que o comando `astro` estiver executando.
```js
// astro.config.mjs
import { defineConfig } from 'astro/config'

export default defineConfig({
// Resolve o caminho "./foo" em seu diretório atual.
// Resolve o caminho "./foo" em seu diretório de trabalho atual.
root: 'foo'
})
```
Astro irá resolver todos os outros arquivos e diretórios relativos à raiz do projeto definida:
```js
// astro.config.mjs
import { defineConfig } from 'astro/config'

export default defineConfig({
// Resolve o caminho "./foo" em seu diretório atual.
// Resolve o caminho "./foo" em seu diretório de trabalho atual.
root: 'foo',
// Resolve o caminho "./foo/public" em seu diretório atual.
// Resolve o caminho "./foo/public" em seu diretório de trabalho atual.
publicDir: 'public',
})
```
Para referenciar um arquivo ou diretório relativo ao arquivo de configuração, use `import.meta.url` (a menos que você esteja em um arquivo common.js `astro.config.cjs`):
```js
```js "import.meta.url"
// astro.config.mjs
import { defineConfig } from 'astro/config'

export default defineConfig({
// Resolve o caminho "./foo" relativo a este arquivo de configuração.
root: new URL("./foo", import.meta.url),
Expand All @@ -113,7 +122,10 @@ export default defineConfig({
Para código que o Astro processa, como arquivos JavaScript e CSS importados, você pode customizar os nomes de arquivos finais utilizando [`entryFileNames`](https://rollupjs.org/guide/en/#outputentryfilenames), [`chunkFileNames`](https://rollupjs.org/guide/en/#outputchunkfilenames), e [`assetFileNames`](https://rollupjs.org/guide/en/#outputassetfilenames) na entrada `vite.build.rollupOptions` no seu arquivo `astro.config.*`.
```js
```js ins={9-11}
// astro.config.mjs
import { defineConfig } from 'astro/config'

export default defineConfig({
vite: {
build: {
Expand Down
14 changes: 7 additions & 7 deletions src/pages/pt-br/guides/environment-variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Note que enquanto _todas_ as variáveis de ambiente estão disponíveis em códi

Veja o exemplo oficial de [variáveis de ambiente](https://github.com/withastro/astro/tree/main/examples/env-vars) para entender as melhores práticas.

```ini
```ini title=".env"
SENHA_SECRETA=senha123
PUBLIC_TODOS=aqui
```
Expand All @@ -36,15 +36,15 @@ Você também pode adicionar um modo (entre `production` ou `development`) ao no

Simplesmente crie um arquivo `.env` no diretório do seu projeto e adicione algumas variáveis a ele.

```bash
# .env
# Isso só estará disponível enquando executado no servidor!
``` ini title=".env"
# Isso só estará disponível enquanto executado no servidor!
SENHA_BD="foobar"
# Isso estará disponível em todo lugar!
PUBLIC_POKEAPI="https://pokeapi.co/api/v2"
```

```ini
```yaml
# Nomes de arquivo suportados:
.env # carregado em todos os casos
.env.local # carregado em todos os casos, ignorado pelo git
.env.[modo] # carregado apenas no modo especificado
Expand All @@ -61,7 +61,7 @@ Vite substitui todas as menções de `import.meta.env` por valores estáticos.

Por exemplo, utilize `import.meta.env.PUBLIC_POKEAPI` para obter a variável de ambiente `PUBLIC_POKEAPI`.

```js
```js /(?<!//.*)import.meta.env.[A-Z_]+/
// Quando import.meta.env.SSR === true
const dados = await db(import.meta.env.SENHA_BD);

Expand All @@ -82,7 +82,7 @@ Embora você possa definir mais variáveis customizadas em arquivos `.env.[modo]
Para realizar isso, você pode criar um `env.d.ts` em `src/` e configurar `ImportMetaEnv` assim:
```ts
```ts title="src/env.d.ts"
interface ImportMetaEnv {
readonly SENHA_BD: string;
readonly PUBLIC_POKEAPI: string;
Expand Down
6 changes: 3 additions & 3 deletions src/pages/pt-br/guides/rss.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,21 +83,21 @@ Veja a [documentação da importação por glob do Vite](https://vitejs.dev/guid

Nós recomendamos essa opção para arquivos `.md` fora do diretório `pages`. Isso é comum quando estiver gerando rotas [via `getStaticPaths`](/pt-br/reference/api-reference/#getstaticpaths).

Por exemplo, digamos que suas postagens `.md` estão armazenadas no diretório `src/postagens/`. Cada post tem `title`, `pubDate` e `slug` em seu frontmatter, aonde `slug` corresponde a URL final do seu site. Nós podemos gerar um feed RSS utilizando [o helper do Vite `import.meta.globEager`](https://vitejs.dev/guide/features.html#glob-import) assim:
Por exemplo, digamos que suas postagens `.md` estão armazenadas no diretório `src/postagens/`. Cada post tem `title`, `pubDate` e `slug` em seu frontmatter, aonde `slug` corresponde a URL final do seu site. Nós podemos gerar um feed RSS utilizando [o helper do Vite `import.meta.glob`](https://vitejs.dev/guide/features.html#glob-import) assim:

```js
// src/pages/rss.xml.js
import rss from '@astrojs/rss';

const resultadoImportacaoPostagens = import.meta.globEager('../postagens/**/*.md');
const resultadoImportacaoPostagens = import.meta.glob('../postagens/**/*.md', { eager: true });
const postagens = Object.values(resultadoImportacaoPostagens);

export const get = () => rss({
title: 'Blog do Buzz',
description: 'O guia de um humilde Astronauta para as estrelas',
site: import.meta.env.SITE,
items: postagens.map((postagem) => ({
link: postagem.frontmatter.slug,
link: postagem.url,
title: postagem.frontmatter.title,
pubDate: postagem.frontmatter.pubDate,
}))
Expand Down
56 changes: 29 additions & 27 deletions src/pages/pt-br/guides/server-side-rendering.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,14 @@ Você irá encontrar mais instruções nos links individuais dos adaptadores aci

1. [Adicione o adaptador](/pt-br/reference/configuration-reference/) no import e default export do seu arquivo `astro.config.mjs`

```diff
```js ins={3,6-7}
// astro.config.mjs
import { defineConfig } from 'astro/config';
+ import meuAdaptador from '@astrojs/meu-adaptador';
import meuAdaptador from '@astrojs/meu-adaptador';
export default defineConfig({
+ adapter: meuAdaptador(),
output: 'server',
adapter: meuAdaptador(),
});
```
Expand All @@ -54,7 +56,7 @@ O Astro continuará sendo um gerador de sites estáticos por padrão. Porém, qu
Os cabeçalhos de uma requisição estão disponíveis em `Astro.request.headers`. Ele é um objeto [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers), parecido com um Map, onde você pode pegar cabeçalhos como o cookie.
```astro
```astro title="src/pages/index.astro" {2}
---
const cookie = Astro.request.headers.get('cookie');
// ...
Expand All @@ -68,14 +70,14 @@ const cookie = Astro.request.headers.get('cookie');
Na global `Astro`, este método permite que você redirecione para outra página. Você talvez faça isso após checar se o usuário está logado obtendo sua sessão de um cookie.
```astro
```astro title="src/pages/conta.astro" {8}
---
import { isLogado } from '../utils';
const cookie = Astro.request.headers.get('cookie');
// Se o usuário não estiver logado, ele é então redirecionado para a página de login.
if(!isLogado(cookie)) {
// Se o usuário não estiver logado, ele é então redirecionado para a página de login
if (!isLogado(cookie)) {
return Astro.redirect('/login');
}
---
Expand All @@ -88,16 +90,14 @@ if(!isLogado(cookie)) {
Você também consegue retornar uma [Response](https://developer.mozilla.org/pt-BR/docs/Web/API/Response) de qualquer página. Você talvez faça isso para retornar um 404 em uma página dinâmica após verificar um id em um banco de dados.
__[id].astro__
```astro
```astro title="src/pages/[id].astro" {8-11}
---
import { getProduto } from '../api';
const produto = await getProduto(Astro.params.id);
// O produto não foi encontrado
if(!produto) {
if (!produto) {
return new Response(null, {
status: 404,
statusText: 'Não encontrado'
Expand All @@ -119,15 +119,14 @@ No Astro, essas rotas se tornam em rotas renderizadas no servidor, te permitindo
No exemplo abaixo, uma rota de API é utilizada para pegar um produto de um banco de dados, sem precisar gerar uma página para cada uma das opções.
__[id].js__
```js
```js title="src/pages/[id].js"
import { getProduto } from '../db';
export async function get({ params }) {
const { id } = params;
const produto = await getProduto(id);
if(!produto) {
if (!produto) {
return new Response(null, {
status: 404,
statusText: 'Não encontrado'
Expand All @@ -146,29 +145,29 @@ Além de buscar conteúdo e renderização no servidor, rotas de API podem ser u
Nesse exemplo abaixo, uma rota de API é usada para verificar o reCaptcha v3 do Google sem expor a chave secreta aos clientes.
__pages/index.astro__
```astro
```astro title="src/pages/index.astro"
<html>
<head>
<script src="https://www.google.com/recaptcha/api.js"></script>
</head>
<body>
<button class="g-recaptcha"
data-sitekey="PUBLIC_SITE_KEY"
data-callback="onSubmit"
data-action="submit"> Clique aqui para verificar o desafio captcha! </button>
<script is:inline>
function onSubmit(token){
fetch("/recaptcha",{
function onSubmit(token) {
fetch("/recaptcha", {
method: "POST",
body: JSON.stringify({recaptcha: token})
body: JSON.stringify({ recaptcha: token })
})
.then((resposta) => resposta.json())
.then((gResposta) => {
if(gResposta.success){
if (gResposta.success) {
// Verificação do captcha foi um sucesso
} else{
} else {
// Verificação do captcha falhou
}
})
Expand All @@ -180,22 +179,25 @@ __pages/index.astro__
Na rota de API você pode seguramente definir valores secretos, ou ler suas variáveis de ambiente secretas.
__pages/recaptcha.js__
```js
```js title="src/pages/recaptcha.js"
import fetch from 'node-fetch';
export async function post({request}){
export async function post({ request }) {
const dados = request.json();
const recaptchaURL = 'https://www.google.com/recaptcha/api/siteverify';
const corpoRequisicao = {
secret: "CHAVE_SECRETA_DO_SEU_SITE", // Isto pode ser uma variável de ambiente
response: dados.recaptcha // O token passado para o cliente
};
const resposta = await fetch(recaptchaURL, {
method: "POST",
body: JSON.stringify(corpoRequisicao)
});
const dadosResposta = await resposta.json();
return new Response(JSON.stringify(dadosResposta), {status: 200});
return new Response(JSON.stringify(dadosResposta), { status: 200 });
}
```
2 changes: 1 addition & 1 deletion src/pages/pt-br/install/auto.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Pronto para instalar Astro? Siga os guias de configuração automático ou manua

#### Pré-requisitos

- **Node.js** - `14.15.0`, `v16.0.0`, ou superior.
- **Node.js** - `14.18.0`, `v16.12.0`, ou superior.
- **Editor de Texto** - Recomendamos o [VS Code](https://code.visualstudio.com/) com a nossa [extensão oficial Astro](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode).
- **Terminal** - Astro é acessado através da sua Interface de Linha de Comando.

Expand Down
2 changes: 1 addition & 1 deletion src/pages/pt-br/install/manual.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Pronto para instalar Astro? Siga os guias de configuração automático ou manua

#### Pré-requisitos

- **Node.js** - `14.15.0`, `v16.0.0`, ou superior.
- **Node.js** - `14.18.0`, `v16.12.0`, ou superior.
- **Editor de Texto** - Recomendamos o [VS Code](https://code.visualstudio.com/) com a nossa [extensão oficial Astro](https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode).
- **Terminal** - Astro é acessado através da sua Interface de Linha de Comando.

Expand Down
2 changes: 2 additions & 0 deletions src/pages/pt-br/integrations/integrations.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ Apesar das descrições abaixo estarem traduzidas, o conteúdo dos links é em I

[p13rnd/centauri](https://github.com/p13rnd/centauri) - Template Astro: Tailwind, Svelte e autenticação com Supabase

[datocms/datocms-astro-blog-demo](https://github.com/datocms/datocms-astro-blog-demo) - Template inicial de blog com DatoCMS


:::tip
Veja mais exemplos de repositórios iniciais e sites construídos com Astro em [Awesome Astro](https://github.com/one-aalam/awesome-astro#%E2%84%B9%EF%B8%8F-repositoriesstarter-kitscomponents)
Expand Down
Loading

0 comments on commit 8ef85e2

Please sign in to comment.