Skip to content

Commit 73a249f

Browse files
adielcristohenderkes
authored andcommitted
feat: add Brazilian Portuguese translation (php#1645)
* feat: add Brazilian Portuguese * Translate file README.md * Update file README.md * Translate file docs/classic.md * Translate file docs/worker.md * Translate file docs/early-hints.md * Translate file docs/mercure.md * Translate file docs/x-sendfile.md * Translate file docs/config.md * Translate file docs/docker.md * Minor fixes * Translate file docs/production.md * Translate file CONTRIBUTING.md * Minor fixes * Translate file docs/performance.md * Minor fixes * Translate file docs/embed.md * Minor fixes * Minor fixes * Translate file docs/static.md * Translate file docs/compile.md * Minor fixes * Translate file docs/metrics.md * Translate file docs/laravel.md * Translate file docs/known-issues.md * Minor fixes * Translate file docs/github-actions.md * Fix build * Fix build * fix: remove text already translated * feat: update translation * fix: format comments based on other translations
1 parent 35ca7cb commit 73a249f

18 files changed

Lines changed: 2645 additions & 0 deletions

docs/pt-br/CONTRIBUTING.md

Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
# Contribuindo
2+
3+
## Compilando o PHP
4+
5+
### Com Docker (Linux)
6+
7+
Crie a imagem Docker de desenvolvimento:
8+
9+
```console
10+
docker build -t frankenphp-dev -f dev.Dockerfile .
11+
docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -p 8080:8080 -p 443:443 -p 443:443/udp -v $PWD:/go/src/app -it frankenphp-dev
12+
```
13+
14+
A imagem contém as ferramentas de desenvolvimento usuais (Go, GDB, Valgrind,
15+
Neovim...) e usa os seguintes locais de configuração do PHP:
16+
17+
- php.ini: `/etc/frankenphp/php.ini`.
18+
Um arquivo `php.ini` com configurações de desenvolvimento é fornecido por
19+
padrão.
20+
- Arquivos de configuração adicionais: `/etc/frankenphp/php.d/*.ini`.
21+
- Extensões PHP: `/usr/lib/frankenphp/modules/`.
22+
23+
Se a sua versão do Docker for anterior à 23.0, a compilação falhará devido ao
24+
[problema de padrão do `.dockerignore`](https://github.com/moby/moby/pull/42676).
25+
Adicione diretórios ao `.dockerignore`.
26+
27+
```patch
28+
!testdata/*.php
29+
!testdata/*.txt
30+
+!caddy
31+
+!internal
32+
```
33+
34+
### Sem Docker (Linux e macOS)
35+
36+
[Siga as instruções para compilar a partir dos fontes](compile.md) e passe a
37+
flag de configuração `--debug`.
38+
39+
## Executando a suite de testes
40+
41+
```console
42+
go test -tags watcher -race -v ./...
43+
```
44+
45+
## Módulo Caddy
46+
47+
Construa o Caddy com o módulo Caddy FrankenPHP:
48+
49+
```console
50+
cd caddy/frankenphp/
51+
go build -tags watcher,brotli,nobadger,nomysql,nopgx
52+
cd ../../
53+
```
54+
55+
Execute o Caddy com o módulo Caddy FrankenPHP:
56+
57+
```console
58+
cd testdata/
59+
../caddy/frankenphp/frankenphp run
60+
```
61+
62+
O servidor está escutando em `127.0.0.1:80`:
63+
64+
> [!NOTE]
65+
> Se você estiver usando o Docker, terá que vincular a porta 80 do contêiner ou
66+
> executar de dentro do contêiner.
67+
68+
```console
69+
curl -vk http://127.0.0.1/phpinfo.php
70+
```
71+
72+
## Servidor de teste mínimo
73+
74+
Construa o servidor de teste mínimo:
75+
76+
```console
77+
cd internal/testserver/
78+
go build
79+
cd ../../
80+
```
81+
82+
Execute o servidor de teste:
83+
84+
```console
85+
cd testdata/
86+
../internal/testserver/testserver
87+
```
88+
89+
O servidor está escutando em `127.0.0.1:8080`:
90+
91+
```console
92+
curl -v http://127.0.0.1:8080/phpinfo.php
93+
```
94+
95+
## Construindo imagens Docker localmente
96+
97+
Imprima o plano do bake:
98+
99+
```console
100+
docker buildx bake -f docker-bake.hcl --print
101+
```
102+
103+
Construa imagens FrankenPHP para amd64 localmente:
104+
105+
```console
106+
docker buildx bake -f docker-bake.hcl --pull --load --set "*.platform=linux/amd64"
107+
```
108+
109+
Construa imagens FrankenPHP para arm64 localmente:
110+
111+
```console
112+
docker buildx bake -f docker-bake.hcl --pull --load --set "*.platform=linux/arm64"
113+
```
114+
115+
Construa imagens FrankenPHP do zero para arm64 e amd64 e envie para o Docker
116+
Hub:
117+
118+
```console
119+
docker buildx bake -f docker-bake.hcl --pull --no-cache --push
120+
```
121+
122+
## Depurando falhas de segmentação com compilações estáticas
123+
124+
1. Baixe a versão de depuração do binário do FrankenPHP do GitHub ou crie sua
125+
própria compilação estática personalizada, incluindo símbolos de depuração:
126+
127+
```console
128+
docker buildx bake \
129+
--load \
130+
--set static-builder.args.DEBUG_SYMBOLS=1 \
131+
--set "static-builder.platform=linux/amd64" \
132+
static-builder
133+
docker cp $(docker create --name static-builder-musl dunglas/frankenphp:static-builder-musl):/go/src/app/dist/frankenphp-linux-$(uname -m) frankenphp
134+
```
135+
136+
2. Substitua sua versão atual do `frankenphp` pelo executável de depuração do
137+
FrankenPHP.
138+
3. Inicie o FrankenPHP normalmente (alternativamente, você pode iniciar o
139+
FrankenPHP diretamente com o GDB: `gdb --args frankenphp run`).
140+
4. Anexe ao processo com o GDB:
141+
142+
```console
143+
gdb -p `pidof frankenphp`
144+
```
145+
146+
5. Se necessário, digite `continue` no shell do GDB.
147+
6. Faça o FrankenPHP travar.
148+
7. Digite `bt` no shell do GDB.
149+
8. Copie a saída.
150+
151+
## Depurando falhas de segmentação no GitHub Actions
152+
153+
1. Abra o arquivo `.github/workflows/tests.yml`.
154+
2. Habilite os símbolos de depuração do PHP:
155+
156+
```patch
157+
- uses: shivammathur/setup-php@v2
158+
# ...
159+
env:
160+
phpts: ts
161+
+ debug: true
162+
```
163+
164+
3. Habilite o `tmate` para se conectar ao contêiner:
165+
166+
```patch
167+
- name: Set CGO flags
168+
run: echo "CGO_CFLAGS=$(php-config --includes)" >> "$GITHUB_ENV"
169+
+ - run: |
170+
+ sudo apt install gdb
171+
+ mkdir -p /home/runner/.config/gdb/
172+
+ printf "set auto-load safe-path /\nhandle SIG34 nostop noprint pass" > /home/runner/.config/gdb/gdbinit
173+
+ - uses: mxschmitt/action-tmate@v3
174+
```
175+
176+
4. Conecte-se ao contêiner.
177+
5. Abra o `frankenphp.go`.
178+
6. Habilite o `cgosymbolizer`:
179+
180+
```patch
181+
- //_ "github.com/ianlancetaylor/cgosymbolizer"
182+
+ _ "github.com/ianlancetaylor/cgosymbolizer"
183+
```
184+
185+
7. Baixe o módulo: `go get`.
186+
8. No contêiner, você pode usar o GDB e similares:
187+
188+
```console
189+
go test -tags watcher -c -ldflags=-w
190+
gdb --args frankenphp.test -test.run ^MyTest$
191+
```
192+
193+
9. Quando a falha for corrigida, reverta todas essas alterações.
194+
195+
## Recursos diversos de desenvolvimento
196+
197+
- [PHP embedding in uWSGI](https://github.com/unbit/uwsgi/blob/master/plugins/php/php_plugin.c)
198+
- [PHP embedding in NGINX Unit](https://github.com/nginx/unit/blob/master/src/nxt_php_sapi.c)
199+
- [PHP embedding in Go (go-php)](https://github.com/deuill/go-php)
200+
- [PHP embedding in Go (GoEmPHP)](https://github.com/mikespook/goemphp)
201+
- [PHP embedding in C++](https://gist.github.com/paresy/3cbd4c6a469511ac7479aa0e7c42fea7)
202+
- [Extending and Embedding PHP por Sara Golemon](https://books.google.fr/books?id=zMbGvK17_tYC&pg=PA254&lpg=PA254#v=onepage&q&f=false)
203+
- [What the heck is TSRMLS_CC, anyway?](http://blog.golemon.com/2006/06/what-heck-is-tsrmlscc-anyway.html)
204+
- [SDL bindings](https://pkg.go.dev/github.com/veandco/go-sdl2@v0.4.21/sdl#Main)
205+
206+
## Recursos relacionados ao Docker
207+
208+
- [Definição do arquivo Bake](https://docs.docker.com/build/customize/bake/file-definition/)
209+
- [`docker buildx build`](https://docs.docker.com/engine/reference/commandline/buildx_build/)
210+
211+
## Comando útil
212+
213+
```console
214+
apk add strace util-linux gdb
215+
strace -e 'trace=!futex,epoll_ctl,epoll_pwait,tgkill,rt_sigreturn' -p 1
216+
```
217+
218+
## Traduzindo a documentação
219+
220+
Para traduzir a documentação e o site para um novo idioma, siga estes passos:
221+
222+
1. Crie um novo diretório com o código ISO de 2 caracteres do idioma no
223+
diretório `docs/` deste repositório.
224+
2. Copie todos os arquivos `.md` da raiz do diretório `docs/` para o novo
225+
diretório (sempre use a versão em inglês como fonte para tradução, pois está
226+
sempre atualizada).
227+
3. Copie os arquivos `README.md` e `CONTRIBUTING.md` do diretório raiz para o
228+
novo diretório.
229+
4. Traduza o conteúdo dos arquivos, mas não altere os nomes dos arquivos, nem
230+
traduza strings que comecem com `> [!` (é uma marcação especial para o
231+
GitHub).
232+
5. Crie um pull request com as traduções.
233+
6. No
234+
[repositório do site](https://github.com/dunglas/frankenphp-website/tree/main),
235+
copie e traduza os arquivos de tradução nos diretórios `content/`, `data/` e
236+
`i18n/`.
237+
7. Traduza os valores no arquivo YAML criado.
238+
8. Abra um pull request no repositório do site.

docs/pt-br/README.md

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
# FrankenPHP: Servidor de aplicações moderno para PHP
2+
3+
<h1 align="center"><a href="https://frankenphp.dev/pt-br"><img src="frankenphp.png" alt="FrankenPHP" width="600"></a></h1>
4+
5+
O FrankenPHP é um servidor de aplicações moderno para PHP, construído sobre o
6+
servidor web [Caddy](https://caddyserver.com/).
7+
8+
O FrankenPHP oferece superpoderes às suas aplicações PHP graças aos seus
9+
recursos impressionantes: [_Early Hints_](early-hints.md),
10+
[modo worker](worker.md), [recursos em tempo real](mercure.md), suporte
11+
automático a HTTPS, HTTP/2 e HTTP/3...
12+
13+
O FrankenPHP funciona com qualquer aplicação PHP e torna seus projetos Laravel e
14+
Symfony mais rápidos do que nunca, graças às suas integrações oficiais com o
15+
modo worker.
16+
17+
O FrankenPHP também pode ser usado como uma biblioteca Go independente para
18+
incorporar PHP em qualquer aplicação usando `net/http`.
19+
20+
[**Saiba mais** em _frankenphp.dev_](https://frankenphp.dev/pt-br) e neste
21+
conjunto de slides:
22+
23+
<a href="https://dunglas.dev/2022/10/frankenphp-the-modern-php-app-server-written-in-go/"><img src="https://dunglas.dev/wp-content/uploads/2022/10/frankenphp.png" alt="Slides" width="600"></a>
24+
25+
## Começando
26+
27+
### Binário independente
28+
29+
Fornecemos binários estáticos do FrankenPHP para Linux e macOS contendo o
30+
[PHP 8.4](https://www.php.net/releases/8.4/pt_BR.php) e as extensões PHP mais
31+
populares.
32+
33+
No Windows, use [WSL](https://learn.microsoft.com/pt-br/windows/wsl/) para
34+
executar o FrankenPHP.
35+
36+
[Baixe o FrankenPHP](https://github.com/php/frankenphp/releases) ou copie esta
37+
linha no seu terminal para instalar automaticamente a versão apropriada para sua
38+
plataforma:
39+
40+
```console
41+
curl https://frankenphp.dev/install.sh | sh
42+
mv frankenphp /usr/local/bin/
43+
```
44+
45+
Para servir o conteúdo do diretório atual, execute:
46+
47+
```console
48+
frankenphp php-server
49+
```
50+
51+
Você também pode executar scripts de linha de comando com:
52+
53+
```console
54+
frankenphp php-cli /caminho/para/seu/script.php
55+
```
56+
57+
### Docker
58+
59+
Alternativamente, [imagens do Docker](docker.md) estão disponíveis:
60+
61+
```console
62+
docker run -v .:/app/public \
63+
-p 80:80 -p 443:443 -p 443:443/udp \
64+
dunglas/frankenphp
65+
```
66+
67+
Acesse `https://localhost` e divirta-se!
68+
69+
> [!TIP]
70+
>
71+
> Não tente usar `https://127.0.0.1`.
72+
> Use `https://localhost` e aceite o certificado autoassinado.
73+
> Use a
74+
> [variável de ambiente `SERVER_NAME`](config.md#variaveis-de-ambiente)
75+
> para alterar o domínio a ser usado.
76+
77+
### Homebrew
78+
79+
O FrankenPHP também está disponível como um pacote [Homebrew](https://brew.sh)
80+
para macOS e Linux.
81+
82+
Para instalá-lo:
83+
84+
```console
85+
brew install dunglas/frankenphp/frankenphp
86+
```
87+
88+
Para servir o conteúdo do diretório atual, execute:
89+
90+
```console
91+
frankenphp php-server
92+
```
93+
94+
## Documentação
95+
96+
- [Modo clássico](classic.md)
97+
- [Modo Worker](worker.md)
98+
- [Suporte a Early Hints (código de status HTTP 103)](early-hints.md)
99+
- [Tempo real](mercure.md)
100+
- [Servindo grandes arquivos estáticos com eficiência](x-sendfile.md)
101+
- [Configuração](config.md)
102+
- [Imagens Docker](docker.md)
103+
- [Implantação em produção](production.md)
104+
- [Otimização de desempenho](performance.md)
105+
- [Crie aplicações PHP **independentes** e autoexecutáveis](embed.md)
106+
- [Crie binários estáticos](static.md)
107+
- [Compile a partir do código-fonte](compile.md)
108+
- [Monitorando o FrankenPHP](metrics.md)
109+
- [Integração com Laravel](laravel.md)
110+
- [Problemas conhecidos](known-issues.md)
111+
- [Aplicação de demonstração (Symfony) e benchmarks](https://github.com/dunglas/frankenphp-demo)
112+
- [Documentação da biblioteca Go](https://pkg.go.dev/github.com/dunglas/frankenphp)
113+
- [Contribuindo e depurando](CONTRIBUTING.md)
114+
115+
## Exemplos e esqueletos
116+
117+
- [Symfony](https://github.com/dunglas/symfony-docker)
118+
- [API Platform](https://api-platform.com/docs/symfony)
119+
- [Laravel](laravel.md)
120+
- [Sulu](https://sulu.io/blog/running-sulu-with-frankenphp)
121+
- [WordPress](https://github.com/StephenMiracle/frankenwp)
122+
- [Drupal](https://github.com/dunglas/frankenphp-drupal)
123+
- [Joomla](https://github.com/alexandreelise/frankenphp-joomla)
124+
- [TYPO3](https://github.com/ochorocho/franken-typo3)
125+
- [Magento2](https://github.com/ekino/frankenphp-magento2)

docs/pt-br/classic.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Usando o modo clássico
2+
3+
Sem nenhuma configuração adicional, o FrankenPHP opera no modo clássico.
4+
Neste modo, o FrankenPHP funciona como um servidor PHP tradicional, servindo
5+
diretamente arquivos PHP.
6+
Isso o torna um substituto perfeito para PHP-FPM ou Apache com mod_php.
7+
8+
Semelhante ao Caddy, o FrankenPHP aceita um número ilimitado de conexões e usa
9+
um [número fixo de threads](config.md#configuracao-do-caddyfile) para servi-las.
10+
O número de conexões aceitas e enfileiradas é limitado apenas pelos recursos
11+
disponíveis no sistema.
12+
O pool de threads do PHP opera com um número fixo de threads inicializadas na
13+
inicialização, comparável ao modo estático do PHP-FPM.
14+
Também é possível permitir que as threads
15+
[escalem automaticamente em tempo de execução](performance.md#max_threads),
16+
semelhante ao modo dinâmico do PHP-FPM.
17+
18+
As conexões enfileiradas aguardarão indefinidamente até que uma thread PHP
19+
esteja disponível para servi-las.
20+
Para evitar isso, você pode usar a
21+
[configuração](config.md#configuracao-do-caddyfile) `max_wait_time` para limitar
22+
o tempo que uma requisição pode esperar por uma thread PHP livre antes de ser
23+
rejeitada.
24+
Além disso, você pode definir um
25+
[tempo limite de escrita razoável no Caddy](https://caddyserver.com/docs/caddyfile/options#timeouts).
26+
27+
Cada instância do Caddy ativará apenas um pool de threads do FrankenPHP, que
28+
será compartilhado entre todos os blocos `php_server`.

0 commit comments

Comments
 (0)