Começando a contribuir código para o Weblate

Para entender o código-fonte do Weblate, primeiro confira Código-fonte do Weblate, Weblate frontend e Weblate internals.

Começando com a nossa base de código

Se estiver procurando por alguns bugs para se familiarizar com a base de códigos do Weblate, procure por aqueles rotulados como good first issue.

Executando Weblate localmente

A abordagem mais confortável para começar a desenvolver Weblate é seguir …/admin/install/source. Isso lhe dará um virtualenv com fontes editáveis do Weblate.

  1. Clonar o código-fonte do Weblate:

    git clone https://github.com/WeblateOrg/weblate.git
    cd weblate
    
  2. Crie um virtualenv:

    virtualenv .venv
    .venv/bin/activate
    
  3. Instale Weblate (isto vai precisar de algumas dependências do sistema, veja …/admin/install/source):

    pip install -e .
    
  1. Instale todas as dependências úteis para o desenvolvimento:

    pip install -r requirements-dev.txt
    
  2. Inicie um servidor de desenvolvimento:

    weblate runserver
    
  3. Dependendo da sua configuração, você também pode querer inciar workers do Celery:

    ./weblate/examples/celery start
    
  4. Para executar o teste (veja Local testing para mais detalhes):

    . scripts/test-database
    ./manage.py test
    

Executando Weblate localmente no Docker

Se você tiver Docker e docker-compose instalados, você pode colocar para funcionar o ambiente de desenvolvimento simplesmente executando:

./rundev.sh

Ele irá criar a imagem do Docker de desenvolvimento e iniciá-lo. Weblate está sendo executado em <http://127.0.0.1:8080/> e você pode entrar com o usuário admin e senha admin. A nova instalação está vazia, então você pode querer seguir Adding translation projects and components.

Os arquivos Dockerfile e docker-compose.yml para isso estão localizados no diretório dev-docker.

O script também aceita alguns parâmetros; para executar testes, execute-o com o parâmetro test` e então especifique qualquer parâmetro test, por exemplo:

./rundev.sh test --failfast weblate.trans

Nota

Tenha cuidado para que os seus contêineres Docker estejam prontos e em execução antes de fazer os testes. Você pode verificar isso executando o comando docker ps.

Para exibir os logs:

./rundev.sh logs

Para parar a execução dos contêineres em segundo fundo:

./rundev.sh stop

A execução do script sem argumentos irá recriar o contêiner Docker e reiniciá-lo.

Nota

Isto não é adequado para a produção, inclui vários hacks que são inseguros, mas tornam o desenvolvimento mais fácil.

Codificando Weblate com PyCharm

PyCharm é uma IDE conhecida para Python, aqui estão algumas diretrizes para ajudá-lo a configurar o projeto Weblate nele.

Considerando que você acabou de clonar o repositório GitHub, basta abrir a pasta na qual você o clonou em PyCharm. Assim que a IDE estiver aberta, o primeiro passo é especificar o interpretador que você deseja:

../_images/pycharm-1.png

Você pode optar por deixar PyCharm criar o virtualenv para você, ou selecionar um já existente:

../_images/pycharm-2.png

Não se esqueça de instalar as dependências quando o interpretador estiver configurado: você pode fazê-lo, seja através do console (o console do IDE vai usar diretamente o seu virtualenv por padrão), ou através da interface quando receber um aviso sobre dependências em falta.

O segundo passo é definir a informação certa para usar o Django nativo dentro do PyCharm: a ideia é ser capaz de acionar imediatamente os testes unitários no IDE. Para isso, você precisa especificar o caminho raiz do projeto Django e o caminho para suas configurações:

../_images/pycharm-3.png

Be careful, the Django project root is the root of the repository, not the weblate sub-directory. About the settings, you could use the weblate/settings_test.py from the repository, but you could create your own setting and set it there.

O último passo é poder executar o servidor e colocar pontos de interrupção no código para poder depurá-lo. Isto é feito criando uma nova configuração do Django Server:

../_images/pycharm-4.png ../_images/pycharm-5.png

Dica

Tenha cuidado com a propriedade chamada No reload: se você marcá-la, o servidor não vai recarregar automaticamente quando você modificar os arquivos. Isso permite que os pontos de interrupção de depuração existentes persistam, pois estes seriam descartados no recarregamento.

Bootstrapping your devel instance

Você pode querer usar import_demo para criar traduções de demonstração e createadmin para criar um usuário administrador.