Se ele exibir o binário pip em env/bin/pip então funcionou. 🎉
Tip
Toda vez que você instalar um novo pacote com pip nesse ambiente, ative o ambiente novamente.
Isso garante que se você usar um programa instalado por aquele pacote, você utilizará aquele de seu ambiente local e não outro que possa estar instalado globalmente.
Se você cria um arquivo Python que importa e usa FastAPI, e roda com Python de seu ambiente local, ele irá utilizar o código fonte de seu FastAPI local.
E se você atualizar o código fonte do FastAPI local, como ele é instalado com -e, quando você rodar aquele arquivo Python novamente, ele irá utilizar a nova versão do FastAPI que você acabou de editar.
Desse modo, você não tem que "instalar" sua versão local para ser capaz de testar cada mudança.
Para que ele organize os imports corretamente, você precisa ter o FastAPI instalado localmente em seu ambiente, com o comando na seção acima usando -e.
Como ele roda um comando após o outro, modificando e revertendo muitos arquivos, ele demora um pouco para concluir, então pode ser um pouco mais fácil utilizar scripts/format.sh frequentemente e scripts/format-imports.sh somente após "commitar uma branch".
Verifique em issues para ver se existe alguém coordenando traduções para a sua linguagem.
Adicione um único pull request por página traduzida. Isso tornará muito mais fácil a revisão para as outras pessoas.
Para as linguagens que eu não falo, vou esperar por várias pessoas revisarem a tradução antes de mergear.
Você pode verificar também se há traduções para sua linguagem e adicionar revisão para elas, isso irá me ajudar a saber que a tradução está correta e eu possa mergear.
Utilize os mesmos exemplos Python e somente traduza o texto na documentação. Você não tem que alterar nada no código para que funcione.
Utilize as mesmas imagens, nomes de arquivo e links. Você não tem que alterar nada disso para que funcione.
Para verificar o código de duas letras para a linguagem que você quer traduzir, você pode usar a Lista de códigos ISO 639-1.
Vamos dizer que você queira traduzir uma página para uma linguagem que já tenha traduções para algumas páginas, como o Espanhol.
No caso do Espanhol, o código de duas letras é es. Então, o diretório para traduções em Espanhol está localizada em docs/es/.
Tip
A principal ("oficial") linguagem é o Inglês, localizado em docs/en/.
Agora rode o servidor ao vivo para as documentações em Espanhol:
fast →💬 Use o comando "live" e passe o código da linguagem como um argumento de linha de comandopython ./scripts/docs.py live es [INFO] Serving on http://127.0.0.1:8008 [INFO] Start watching changes [INFO] Start detecting changes
Se você procurar no site da documentação do FastAPI, você verá que toda linguagem tem todas as páginas. Mas algumas páginas não estão traduzidas e tem notificação sobre a falta da tradução.
Mas quando você rodar localmente como descrito acima, você somente verá as páginas que já estão traduzidas.
Agora vamos dizer que você queira adicionar uma tradução para a seção Recursos.
Copie o arquivo em:
docs/en/docs/features.md
Cole ele exatamente no mesmo local mas para a linguagem que você quer traduzir, por exemplo:
docs/es/docs/features.md
Tip
Observe que a única mudança na rota é o código da linguagem, de en para es.
Agora abra o arquivo de configuração MkDocs para Inglês em:
docs/en/docs/mkdocs.yml
Procure o lugar onde docs/features.md está localizado no arquivo de configuração. Algum lugar como:
site_name:FastAPI# Mais coisasnav:-FastAPI:index.md-Languages:-en:/-es:/es/-features.md
Abra o arquivo de configuração MkDocs para a linguagem que você está editando, por exemplo:
docs/es/docs/mkdocs.yml
Adicione no mesmo local que está no arquivo em Inglês, por exemplo:
site_name:FastAPI# Mais coisasnav:-FastAPI:index.md-Languages:-en:/-es:/es/-features.md
Tenha certeza que se existem outras entradas, a nova entrada com sua tradução esteja exatamente na mesma ordem como na versão em Inglês.
Se você for no seu navegador verá que agora a documentação mostra sua nova seção. 🎉
Agora você poderá traduzir tudo e ver como está toda vez que salva o arquivo.
Vamos dizer que você queira adicionar traduções para uma linguagem que ainda não foi traduzida, nem sequer uma página.
Vamos dizer que você queira adicionar tradução para Haitiano, e ainda não tenha na documentação.
Verificando o link acima, o código para "Haitiano" é ht.
O próximo passo é rodar o script para gerar um novo diretório de tradução:
fast →💬 Use o comando new-lang, passe o código da linguagem como um argumento de linha de comandopython ./scripts/docs.py new-lang ht Successfully initialized: docs/ht Updating ht Updating en
Quando você usa o script em ./scripts/docs.py com o comando live ele somente exibe os arquivos e traduções disponíveis para a linguagem atual.
Mas uma vez que você tenha concluído, você poderá testar tudo como se parecesse online.
Para fazer isso, primeiro construa toda a documentação:
fast →💬 Use o comando "build-all", isso leverá um tempinhopython ./scripts/docs.py build-all Updating es Updating en Building docs for: en Building docs for: es Successfully built docs for: es Copying en index.md to README.md
Isso gera toda a documentação em ./docs_build/ para cada linguagem. Isso inclui a adição de quaisquer arquivos com tradução faltando, com uma nota dizendo que "esse arquivo ainda não tem tradução". Mas você não tem que fazer nada com esse diretório.
Então ele constrói todos aqueles sites independentes MkDocs para cada linguagem, combina eles, e gera a saída final em ./site/.
Então você poderá "servir" eles com o comando serve:
fast →💬 Use o comando "serve" após rodar "build-all"python ./scripts/docs.py serve Warning: this is a very simple server. For development, use mkdocs serve instead. This is here only to preview a site with translations already built. Make sure you run the build-all command first. Serving at: http://127.0.0.1:8008
Esse comando gera um diretório ./htmlcov/, se você abrir o arquivo ./htmlcov/index.html no seu navegador, poderá explorar interativamente as regiões de código que estão cobertas pelos testes, e observar se existe alguma região faltando.