Atualizando o Weblate

Atualizações de imagem Docker

A imagem Docker oficial (veja Instalando a usar Docker) contém todas as etapas de atualização integradas do Weblate. Normalmente não há nenhuma etapa manual necessária além de puxar a versão mais recente.

Instruções genéricas de atualização

Antes de atualizar, verifique os atuais Requisitos de software, pois eles podem ter mudado. Uma vez que todos os requisitos estejam instalados ou atualizados, ajuste o seu settings.py para corresponder às mudanças na configuração (consulte settings_example.py para os valores corretos).

Sempre verifique Instruções específicas de versão antes de atualizar. Caso esteja a pular algumas versões, siga as instruções para todas as versões que está a pular nessa atualização. Às vezes, é melhor atualizar para alguma versão intermediária para garantir uma migração tranquila. A atualização em várias versões deve funcionar, mas não é tão bem testada quanto as atualizações de versão única.

Nota

É recomendado fazer um backup completo do banco de dados antes da atualização para que possa reverter o banco de dados caso a atualização falhe, veja Fazer backup e mover o Weblate.

  1. Pare os processos wsgi e Cellery. A atualização pode realizar alterações incompatíveis no banco de dados, por isso é sempre mais seguro evitar a execução de processos antigos durante a atualização.

  2. Atualize o código do Weblate.

    Para instalações pip, isso pode ser alcançado da seguinte forma:

    pip install -U "Weblate[all]"
    

    Se não quiser instalar todas as dependências opcionais, faça:

    pip install -U Weblate
    

    Com um checkout do Git, precisa obter o novo código-fonte e atualizar a sua instalação:

    cd weblate-src
    git pull
    # Update Weblate inside your virtualenv
    . ~/weblate-env/bin/pip install -e .
    # Install dependencies directly when not using virtualenv
    pip install --upgrade -r requirements.txt
    # Install optional dependencies directly when not using virtualenv
    pip install --upgrade -r requirements-optional.txt
    
  3. A nova versão do Weblate pode ter novas Dependências opcionais. Verifique se elas cobrem os recursos que deseja.

  4. Atualize o ficheiro de configuração, consulte o settings_example.py ou :ref:`version-specific-instructions`para os passos necessários.

  5. Atualize estrutura do banco de dados:

    weblate migrate --noinput
    
  6. Colete ficheiros estáticos atualizados (veja Executar o servidor e Servir ficheiros estáticos):

    weblate collectstatic --noinput --clear
    
  7. Compactar ficheiros JavaScript e CSS (opcional, veja Comprimir os ativos do cliente):

    weblate compress
    
  8. Se está a usar uma versão do Git, também deve gerar novamente ficheiros locais toda vez que estiver atualizando. Pode fazer isso a invocar:

    weblate compilemessages
    
  9. Verifique que a sua configuração é sana (ver também Configuração de produção):

    weblate check --deploy
    
  10. Reinicie o worker do Celery (veja Tarefas de fundo a usar o Celery).

Instruções específicas de versão

Atualizar de 2.x

Se está a atualizar da versão 2.x, sempre atualize para a 3.0.1 antes e depois continue atualizando na série 3.x. Atualizações pulando esse passo não são suportadas e não funcionarão corretamente.

Atualizar da 3.x

Se está a atualizar da versão 3.x, sempre atualize para a 4.0.4 ou 4.1.1 antes e depois continue a atualizar na série 4.x. Atualizações a pular esse passo não são suportadas e não funcionarão corretamente.

Atualizar da 4.0 para 4.1

Siga as Instruções genéricas de atualização para realizar a atualização.

Mudanças notáveis de configuração ou dependências:

  • Há várias mudanças em settings_example.py, notadamente de middleware. Por favor, ajuste as suas configurações de acordo.

  • Há novos formatos de fiheiros, pode incluí-los no caso de ter modificado o WEBLATE_FORMATS.

  • Há novas verificações de qualidade, pode incluí-las no caso de ter modificado o CHECK_LIST.

  • Há uma mudança na configuração DEFAULT_THROTTLE_CLASSES para permitir relatórios de limitação de taxa na API.

  • Há alguns requisitos novos e atualizados.

  • Há uma mudança em django: INSTALLED_APPS.

  • A configuração MT_DEEPL_API_VERSION foi removida na versão 4.7. A tradução de máquina DeepL agora usa o novo MT_DEEPL_API_URL. Pode precisar ajustar MT_DEEPL_API_URL para corresponder à sua assinatura.

Atualizar da 4.1 para 4.2

Siga as Instruções genéricas de atualização para realizar a atualização.

Mudanças notáveis de configuração ou dependências:

  • A atualização de versões 3.x não é mais suportada. Atualize para 4.0 ou 4.1 primeiro.

  • Há alguns requisitos novos e atualizados.

  • Há várias mudanças em settings_example.py, notadamente um novo middleware e a mudança na ordem dos aplicações.

  • As chaves para formatos baseados em JSON não incluem mais um ponto inicial. As sequências são ajustadas durante a migração do banco de dados, mas os componentes externos podem precisar de ajustes no caso de depender de chaves nas exportações ou API.

  • A configuração do Celery foi alterada para não usar mais a fila memory. Ajuste os seus scripts de inicialização e configuração de CELERY_TASK_ROUTES.

  • O domínio Weblate está agora configurado nas configurações, veja SITE_DOMAIN (ou WEBLATE_SITE_DOMAIN). Terá que configurá-lo antes de executar o Weblate.

  • Os campos de nome de utilizador e e-mail no banco de dados de utilizadores agora devem ser únicos e sem distinção de maiúsculo para minúsculo. Isso acidentalmente não foi reforçado com PostgreSQL.

Atualizar da 4.2 para 4.3

Siga as Instruções genéricas de atualização para realizar a atualização.

Mudanças notáveis de configuração ou dependências:

  • Há algumas mudanças nas verificações de qualidade, pode incluí-las no caso de ter modificado o CHECK_LIST.

  • O atributo do idioma fonte foi movido do projeto para um componente que é exposto na API. Precisará atualizar Cliente Weblate caso esteja a usar.

  • A migração do banco de dados para 4.3 pode demorar, a depender da quantidade de cadeias que está a traduzir (espere cerca de uma hora de tempo de migração por 100.000 cadeias fonte).

  • Há uma mudança em django: INSTALLED_APPS.

  • Há uma nova configuração SESSION_COOKIE_AGE_AUTHENTICATED que complementa SESSION_COOKIE_AGE.

  • Caso esteja a usar hub ou lab para integrar com GitHub ou GitLab, precisará reconfigurar isto, veja GITHUB_CREDENTIALS e GITLAB_CREDENTIALS.

Alterado na versão 4.3.1:

  • A configuração do Celery foi alterada para adicionar a fila de memory. Ajuste os seus scripts de inicialização e configuração de CELERY_TASK_ROUTES.

Alterado na versão 4.3.2:

  • O método post_update de extensões agora leva o parâmetro adicional skip_push.

Atualizar da 4.3 para 4.4

Siga as Instruções genéricas de atualização para realizar a atualização.

Mudanças notáveis de configuração ou dependências:

  • Há uma mudança em django: INSTALLED_APPS, weblate.configuration deve ser adicionado lá.

  • Django 3.1 agora é necessário.

  • Caso esteja a usar MySQL ou MariaDB, as versões mínimas necessárias aumentaram, veja MySQL e MariaDB.

Alterado na versão 4.4.1:

  • Gettext monolíngue agora usa msgid e msgctxt quando presente. Isso mudará a identificação das sequências de tradução em tais ficheiros, a quebrar ligações para dados estendidos do Weblate, como capturas de ecrã ou estados de revisão. Certifique-se de confirmar as alterações pendentes em tais ficheiros antes de atualizar e é recomendado forçar o carregamento do componente afetado a usar loadpo.

  • Incrementada a versão mínima necessária do translate-toolkit para resolver vários problemas de formato de ficheiros.

Atualizar da 4.4 para 4.5

Siga as Instruções genéricas de atualização para realizar a atualização.

Mudanças notáveis de configuração ou dependências:

  • A migração pode levar um tempo considerável se tiver grandes glossários.

  • Glossários agora são armazenados como componentes normais.

  • A API do glossário foi removida. Use a API de tradução normal para acessar os glossários.

  • Há uma mudança em django: INSTALLED_APPS - weblate.metrics deve ser adicionado.

Alterado na versão 4.5.1:

  • Há uma nova dependência do módulo pyahocorasick.

Atualizar da 4.5 para 4.6

Siga as Instruções genéricas de atualização para realizar a atualização.

Mudanças notáveis de configuração ou dependências:

Atualizar da 4.6 para 4.7

Siga as Instruções genéricas de atualização para realizar a atualização.

Mudanças notáveis de configuração ou dependências:

  • Há várias mudanças em settings_example.py, notadamente mudanças de middleware (django: MIDDLEWARE). Ajuste as suas configurações de acordo.

  • A tradução de máquina DeepL agora tem uma configuração MT_DEEPL_API_URL genérica para se adaptar a diferentes modelos de assinatura de forma mais flexível. A configuração MT_DEEPL_API_VERSION não é mais usada.

  • Django 3.2 agora é necessário.

Atualizar da 4.7 para 4.8

Siga as Instruções genéricas de atualização para realizar a atualização.

Não há etapas de atualização adicionais necessárias nesta versão.

Atualizar da 4.8 para 4.9

Siga as Instruções genéricas de atualização para realizar a atualização.

  • Há uma mudança no armazenamento de métricas, a atualização pode levar muito tempo em sites maiores.

Atualizar da 4.9 para 4.10

Siga as Instruções genéricas de atualização para realizar a atualização.

  • Há uma mudança nos grupos por projeto, a atualização pode levar muito tempo em sites com milhares de projetos.

  • Django 4.0 fez algumas mudanças incompatíveis, veja Backwards incompatible changes in 4.0. Weblate ainda oferece suporte ao Django 3.2 por enquanto, no caso de alguma dessas ser problemática. Mudanças mais notáveis que podem afetar o Weblate:

    • Removido o suporte a PostgreSQL 9.6, o Django 4.0 oferece suporte para PostgreSQL 10 e superior.

    • O formato de CSRF_TRUSTED_ORIGINS foi alterado.

  • O contentor do Docker agora usa Django 4.0, consulte as alterações acima.

Upgrade from 4.10 to 4.11

Siga as Instruções genéricas de atualização para realizar a atualização.

  • Weblate now requires Python 3.7 or newer.

Atualização de Python 2 para Python 3

O Weblate não oferece mais suporte a Python anterior a 3.6. Caso ainda esteja a executar uma versão mais antiga, primeiro migre ao Python 3 na versão existente e atualize mais tarde. Consulte Atualizar do Python 2 ao Python 3 na documentação do Weblate 3.11.1.

Migrando de outros bancos de dados para o PostgreSQL

Se estiver a executar o Weblate com outro banco de dados que não é o PostgreSQL, deve considerar a migração ao PostgreSQL, pois o Weblate tem melhor desempenho com ele. As etapas a seguir o orientarão na migração dos seus dados entre os bancos de dados. Lembre-se de parar os servidores web e Celery antes da migração, caso contrário, pode acabar com dados inconsistentes.

Criar um banco de dados no PostgreSQL

Geralmente é uma boa ideia executar o Weblate num banco de dados separado e separar a conta do utilizador:

# If PostgreSQL was not installed before, set the main password
sudo -u postgres psql postgres -c "\password postgres"

# Create a database user called "weblate"
sudo -u postgres createuser -D -P weblate

# Create the database "weblate" owned by "weblate"
sudo -u postgres createdb -E UTF8 -O weblate weblate

Migrando a usar despejos do Django em JSON

A abordagem mais simples para migração é utilizar despejos do Django em JSON. Isso funciona bem para instalações menores. Em sites maiores pode usar o pgloader, veja Migrar para PostgreSQL usa usargloader.

  1. Adicione PostgreSQL como conexão de banco de dados adicional ao settings.py:

DATABASES = {
    "default": {
        # Database engine
        "ENGINE": "django.db.backends.mysql",
        # Database name
        "NAME": "weblate",
        # Database user
        "USER": "weblate",
        # Database password
        "PASSWORD": "password",
        # Set to empty string for localhost
        "HOST": "database.example.com",
        # Set to empty string for default
        "PORT": "",
        # Additional database options
        "OPTIONS": {
            # In case of using an older MySQL server, which has MyISAM as a default storage
            # 'init_command': 'SET storage_engine=INNODB',
            # Uncomment for MySQL older than 5.7:
            # 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
            # If your server supports it, see the Unicode issues above
            "charset": "utf8mb4",
            # Change connection timeout in case you get MySQL gone away error:
            "connect_timeout": 28800,
        },
    },
    "postgresql": {
        # Database engine
        "ENGINE": "django.db.backends.postgresql",
        # Database name
        "NAME": "weblate",
        # Database user
        "USER": "weblate",
        # Database password
        "PASSWORD": "password",
        # Set to empty string for localhost
        "HOST": "database.example.com",
        # Set to empty string for default
        "PORT": "",
    },
}
  1. Execute migrações e descarte todos os dados inseridos nas tabelas:

weblate migrate --database=postgresql
weblate sqlflush --database=postgresql | weblate dbshell --database=postgresql
  1. Despeje o banco de dados legado e importe no PostgreSQL

weblate dumpdata --all --output weblate.json
weblate loaddata weblate.json --database=postgresql
  1. Ajuste django: DATABASES para usar apenas o banco de dados PostgreSQL como padrão, remova a conexão legada.

O Weblate agora deve estar pronto para ser executado a partir do banco de dados PostgreSQL.

Migrar para PostgreSQL usa usargloader

O pgloader é uma ferramenta de migração genérica para migrar dados para PostgreSQL. Pode usá-lo para migrar o banco de dados Weblate.

  1. Ajuste o seu settings.py para usar o PostgreSQL como banco de dados.

  2. Migre o esquema no banco de dados PostgreSQL:

    weblate migrate
    weblate sqlflush | weblate dbshell
    
  3. Execute o pgloader para transferir os dados. O seguinte script pode ser usado para migrar o banco de dados, mas pode aprender mais sobre pgloader para entender o que ele faz e ajustá-lo para corresponder à sua configuração:

    LOAD DATABASE
         FROM      mysql://weblate:password@localhost/weblate
         INTO postgresql://weblate:password@localhost/weblate
    
    WITH include no drop, truncate, create no tables, create no indexes, no foreign keys, disable triggers, reset sequences, data only
    
    ALTER SCHEMA 'weblate' RENAME TO 'public'
    ;
    

Migrando de Pootle

Como o Weblate foi originalmente escrito como substituto do Pootle, é compatível com a migração de contas de utilizador do Pootle. Pode descartar os utilizadores do Pootle e importá-los a usar importusers.