Actualizarea Weblate

Actualizări ale imaginilor Docker

Imaginea oficială Docker (vezi Instalarea folosind Docker) are integrate toate etapele de actualizare Weblate. De obicei, nu sunt necesari pași manuali în afară de extragerea celei mai recente versiuni.

Instrucțiuni generice de actualizare

Înainte de actualizare, vă rugăm să verificați cerințele actuale Cerințe software, deoarece acestea s-ar putea să se fi schimbat. După ce toate cerințele sunt instalate sau actualizate, vă rugăm să ajustați fișierul settings.py pentru a corespunde modificărilor din configurație (consultați settings_example.py pentru valorile corecte).

Verificați întotdeauna Instrucțiuni specifice versiunii înainte de actualizare. În cazul în care săriți peste unele versiuni, vă rugăm să urmați instrucțiunile pentru toate versiunile pe care le săriți în actualizare. Uneori este mai bine să faceți upgrade la o versiune intermediară pentru a asigura o migrare fără probleme. Actualizarea pe mai multe versiuni ar trebui să funcționeze, dar nu este la fel de bine testată ca actualizările pe o singură versiune.

Notă

Este recomandat să efectuați o copie de rezervă completă a bazei de date înainte de actualizare, astfel încât să puteți reface baza de date în cazul în care actualizarea eșuează; consultați Copierea de rezervă și mutarea Weblate.

  1. Opriți procesele wsgi și Celery. Actualizarea poate efectua modificări incompatibile în baza de date, așa că este întotdeauna mai sigur să evitați procesele vechi care rulează în timpul actualizării.

  2. Actualizați codul Weblate.

    În cazul instalațiilor pip, acest lucru poate fi realizat prin:

    pip install -U "Weblate[all]==version"
    

    Sau, dacă doriți doar să obțineți cea mai recentă versiune lansată:

    pip install -U "Weblate[all]"
    

    Dacă nu doriți să instalați toate dependențele opționale, instalați-le:

    pip install -U Weblate
    

    Cu Git checkout, trebuie să preluați noul cod sursă și să vă actualizați instalarea:

    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. Noua versiune Weblate ar putea avea noi Dependențe opționale, vă rugăm să verificați dacă acestea acoperă caracteristicile pe care le doriți.

  4. Actualizați fișierul de configurare, consultați settings_example.py sau Instrucțiuni specifice versiunii pentru pașii necesari.

  5. Actualizarea structurii bazei de date:

    weblate migrate --noinput
    
  6. Colectează fișierele statice actualizate (a se vedea Rularea serverului și Servirea fișierelor statice):

    weblate collectstatic --noinput --clear
    
  7. Comprimarea fișierelor JavaScript și CSS (opțional, consultați Comprimarea activelor clienților):

    weblate compress
    
  8. Dacă executați versiunea din Git, ar trebui, de asemenea, să regenerați fișierele locale de fiecare dată când faceți actualizări. Puteți face acest lucru prin invocarea:

    weblate compilemessages
    
  9. Verificați dacă configurația dumneavoastră este sănătoasă (consultați și Configurarea producției):

    weblate check --deploy
    
  10. Reporniți Celery worker (vezi Sarcini de fundal folosind Celery).

Instrucțiuni specifice versiunii

Actualizare de la 2.x

Dacă faceți upgrade de la versiunea 2.x, faceți întotdeauna mai întâi upgrade la 3.0.1 și apoi continuați upgrade-ul în seria 3.x. Actualizările care sar peste acest pas nu sunt acceptate și se vor defecta.

Actualizare de la 3.x

Dacă faceți upgrade de la versiunea 3.x, faceți întotdeauna mai întâi upgrade la 4.0.4 sau 4.1.1 și apoi continuați să faceți upgrade în seria 4.x. Actualizările care sar peste acest pas nu sunt acceptate și se vor defecta.

Actualizare de la 4.0 la 4.1

Vă rugăm să urmați Instrucțiuni generice de actualizare pentru a efectua actualizarea.

Modificări notabile ale configurației sau dependențelor:

  • Există mai multe modificări în settings_example.py, dintre care cele mai importante sunt modificările middleware, vă rugăm să vă ajustați setările în consecință.

  • Există noi formate de fișiere, este posibil să doriți să le includeți în cazul în care ați modificat WEBLATE_FORMATS.

  • Există noi verificări ale calității, poate doriți să le includeți în cazul în care ați modificat CHECK_LIST.

  • A fost modificată setarea DEFAULT_THROTTLE_CLASSES pentru a permite raportarea limitării ratei în API.

  • Există unele cerințe noi și actualizate.

  • Există o modificare în INSTALLED_APPS.

  • Setarea MT_DEEPL_API_VERSION a fost eliminată în versiunea 4.7. Traducerea automată DeepL utilizează acum în schimb noua valoare MT_DEEPL_API_URL. Este posibil să fie nevoie să ajustați MT_DEEPL_API_URL pentru a corespunde abonamentului dumneavoastră.

Actualizarea de la 4.1 la 4.2

Vă rugăm să urmați Instrucțiuni generice de actualizare pentru a efectua actualizarea.

Modificări notabile ale configurației sau dependențelor:

  • Actualizarea de la versiunile 3.x nu mai este suportată, vă rugăm să faceți mai întâi actualizarea la 4.0 sau 4.1.

  • Există unele cerințe noi și actualizate.

  • Există mai multe modificări în settings_example.py, dintre care cele mai importante sunt noul middleware și modificarea ordinii aplicațiilor.

  • Cheile pentru formatele bazate pe JSON nu mai includ punctul din față. Șirurile de caractere sunt ajustate în timpul migrării bazei de date, dar componentele externe ar putea avea nevoie de ajustare în cazul în care vă bazați pe chei în exporturi sau API.

  • Configurația Celery a fost modificată pentru a nu mai folosi coada memory. Vă rugăm să vă ajustați scripturile de pornire și setarea CELERY_TASK_ROUTES.

  • Domeniul Weblate este acum configurat în setări, vezi SITE_DOMAIN (sau WEBLATE_SITE_DOMAIN). Va trebui să îl configurați înainte de a rula Weblate.

  • Câmpurile de nume de utilizator și de e-mail din baza de date a utilizatorilor trebuie să fie unice și insensibile la majuscule și minuscule. Din greșeală, acest lucru nu a fost aplicat cu PostgreSQL.

Actualizare de la 4.2 la 4.3

Vă rugăm să urmați Instrucțiuni generice de actualizare pentru a efectua actualizarea.

Modificări notabile ale configurației sau dependențelor:

  • Există unele modificări în ceea ce privește verificările de calitate, este posibil să doriți să le includeți în cazul în care ați modificat CHECK_LIST.

  • Atributul limbii sursă a fost mutat de la proiect la o componentă care este expusă în API. Va trebui să actualizați Client Weblate în cazul în care îl utilizați.

  • Migrarea bazei de date către 4.3 poate dura mult timp, în funcție de numărul de șiruri pe care le traduceți (așteptați-vă la aproximativ o oră de migrare pentru fiecare 100.000 de șiruri sursă).

  • Există o modificare în INSTALLED_APPS.

  • Există o nouă setare SESSION_COOKIE_AGE_AUTHENTICATED care completează SESSION_COOKIE_AGE.

  • În cazul în care ați folosit hub sau lab pentru a vă integra cu GitHub sau GitLab, va trebui să reconfigurați acest lucru, consultați GITHUB_CREDENTIALS și GITLAB_CREDENTIALS.

Schimbat în versiunea 4.3.1:

  • Configurația Celery a fost modificată pentru a adăuga coada memory. Vă rugăm să vă ajustați scripturile de pornire și setarea CELERY_TASK_ROUTES.

Schimbat în versiunea 4.3.2:

  • Metoda post_update a add-on-urilor acceptă acum un parametru suplimentar skip_push.

Actualizare de la 4.3 la 4.4

Vă rugăm să urmați Instrucțiuni generice de actualizare pentru a efectua actualizarea.

Modificări notabile ale configurației sau dependențelor:

  • Există o modificare în INSTALLED_APPS, weblate.configuration trebuie să fie adăugat acolo.

  • Django 3.1 este acum necesar.

  • În cazul în care utilizați MySQL sau MariaDB, versiunile minime necesare au crescut, consultați MySQL și MariaDB.

Schimbat în versiunea 4.4.1:

  • Gettext monolingv utilizează acum atât msgid cât și msgctxt atunci când sunt prezente. Acest lucru va schimba identificarea șirurilor de caractere de traducere în astfel de fișiere care sparg legăturile cu date extinse Weblate, cum ar fi capturi de ecran sau stări de revizuire. Vă rugăm să vă asigurați că ați confirmat modificările în așteptare în astfel de fișiere înainte de actualizare și se recomandă să forțați încărcarea componentei afectate folosind loadpo.

  • A crescut versiunea minimă necesară a translate-toolkit pentru a rezolva mai multe probleme legate de formatul fișierelor.

Actualizare de la 4.4 la 4.5

Vă rugăm să urmați Instrucțiuni generice de actualizare pentru a efectua actualizarea.

Modificări notabile ale configurației sau dependențelor:

  • Migrarea ar putea dura mult timp în cazul în care aveți glosare mari.

  • Glosarele sunt acum stocate ca și componente obișnuite.

  • API-ul pentru glosare este eliminat, utilizați API-ul de traducere obișnuit pentru a accesa glosarele.

  • Există o modificare în INSTALLED_APPS - ar trebui adăugat weblate.metrics.

Schimbat în versiunea 4.5.1:

  • Există o nouă dependență de modulul pyahocorasick.

Actualizare de la 4.5 la 4.6

Vă rugăm să urmați Instrucțiuni generice de actualizare pentru a efectua actualizarea.

Modificări notabile ale configurației sau dependențelor:

Actualizare de la 4.6 la 4.7

Vă rugăm să urmați Instrucțiuni generice de actualizare pentru a efectua actualizarea.

Modificări notabile ale configurației sau dependențelor:

  • Există mai multe modificări în settings_example.py, dintre care cele mai importante sunt modificările middleware (MIDDLEWARE), vă rugăm să vă ajustați setările în consecință.

  • Traducerea automată DeepL are acum o setare generică MT_DEEPL_API_URL pentru a se adapta mai flexibil la diferite modele de abonament. Setarea MT_DEEPL_API_VERSION nu mai este utilizată.

  • Django 3.2 este acum necesar.

Actualizare de la 4.7 la 4.8

Vă rugăm să urmați Instrucțiuni generice de actualizare pentru a efectua actualizarea.

Nu sunt necesare etape suplimentare de actualizare în această versiune.

Actualizare de la 4.8 la 4.9

Vă rugăm să urmați Instrucțiuni generice de actualizare pentru a efectua actualizarea.

  • Există o modificare a parametrilor de stocare, iar actualizarea poate dura mult timp în cazul site-urilor mari.

Actualizare de la 4.9 la 4.10

Vă rugăm să urmați Instrucțiuni generice de actualizare pentru a efectua actualizarea.

  • Există o schimbare în grupurile per proiect, actualizarea poate dura mult timp pe site-urile cu mii de proiecte.

  • Django 4.0 a făcut unele modificări incompatibile, vezi Backwards incompatible changes in 4.0. Weblate încă mai suportă Django 3.2 deocamdată, în cazul în care vreuna dintre acestea este problematică. Cele mai notabile modificări care ar putea afecta Weblate:

    • S-a renunțat la suportul pentru PostgreSQL 9.6, Django 4.0 suportă PostgreSQL 10 și versiunile ulterioare.

    • Formatul CSRF_TRUSTED_ORIGINS a fost modificat.

  • Containerul Docker folosește acum Django 4.0, consultați mai sus pentru modificări.

Actualizare de la 4.10 la 4.11

Vă rugăm să urmați Instrucțiuni generice de actualizare pentru a efectua actualizarea.

  • Weblate necesită acum Python 3.7 sau o versiune mai nouă.

  • Implementarea Gestionarea controlului accesului pe proiect a fost modificată, eliminându-se prefixul proiectului din numele grupurilor. Acest lucru afectează utilizatorii API.

  • Weblate folosește acum charset-normalizer în loc de modulul chardet pentru detectarea setului de caractere.

  • Schimbat în 4.11.1: Există o schimbare în setarea REST_FRAMEWORK (eliminarea unuia dintre backend-urile din DEFAULT_AUTHENTICATION_CLASSES).

Actualizare de la 4.11 la 4.12

Vă rugăm să urmați Instrucțiuni generice de actualizare pentru a efectua actualizarea.

  • Nu sunt necesari pași speciali.

Actualizare de la 4.12 la 4.13

Vă rugăm să urmați Instrucțiuni generice de actualizare pentru a efectua actualizarea.

  • Definiții lingvistice sunt acum actualizate automat la actualizare, utilizați UPDATE_LANGUAGES pentru a dezactiva acest lucru.

  • Gestionarea contextului și a locației a fost modificată pentru formatele de fișiere Fișiere Windows RC, Fișiere HTML, Formatul IDML și Fișiere text. În majoritatea cazurilor, contextul este acum afișat ca locație.

  • Serviciile de traducere automată sunt acum configurate cu ajutorul interfeței cu utilizatorul, iar setările din fișierul de configurare vor fi importate în timpul migrării bazei de date.

Actualizare de la 4.13 la 4.14

Vă rugăm să urmați Instrucțiuni generice de actualizare pentru a efectua actualizarea.

  • Verificările de formatare Java se potrivesc acum cu indicatoarele GNU gettext. Stegulețele setate în Weblate vor fi migrate automat, dar scripturile terților vor trebui să folosească java-printf-format în loc de java-format și java-format în loc de java-messageformat.

  • Dependența jellyfish a fost înlocuită cu rapidfuzz.

  • Changed in 4.14.2: Deprecated insecure configuration of VCS service API keys via _TOKEN/_USERNAME configuration instead of _CREDENTIALS list. In Docker, please add matching _HOST directive. For example see WEBLATE_GITHUB_HOST and GITHUB_CREDENTIALS.

Actualizare de la 4.14 la 4.15

Vă rugăm să urmați Instrucțiuni generice de actualizare pentru a efectua actualizarea.

  • Weblate necesită acum extensia btree_gin în PostgreSQL. Procesul de migrare o va instala dacă are suficiente privilegii. Consultați Crearea unei baze de date în PostgreSQL pentru instalarea manuală.

  • The Docker image no longer enables debug mode by default. In case you want it, enable it in the environment using WEBLATE_DEBUG.

  • The database migration make take hours on larger instances due to recreating some of the indexes.

  • Changed in 4.15.1: The default value for DEFAULT_PAGINATION_CLASS in rest framework settings was changed.

Actualizarea de la Python 2 la Python 3

Weblate nu mai acceptă Python mai vechi de 3.6. În cazul în care încă mai folosiți o versiune mai veche, vă rugăm să efectuați mai întâi migrarea la Python 3 pe versiunea existentă și să faceți upgrade ulterior. Consultați Actualizarea de la Python 2 la Python 3 în documentația Weblate 3.11.1.

Migrarea de la alte baze de date la PostgreSQL

Dacă executați Weblate pe o altă bază de date decât PostgreSQL, ar trebui să luați în considerare migrarea la PostgreSQL, deoarece Weblate funcționează cel mai bine cu acesta. Următorii pași vă vor ghida în migrarea datelor între bazele de date. Vă rugăm să nu uitați să opriți ambele servere Web și Celery înainte de migrare, altfel s-ar putea să vă treziți cu date incoerente.

Crearea unei baze de date în PostgreSQL

De obicei, este o idee bună să executați Weblate într-o bază de date separată și într-un cont de utilizator separat:

# 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

Migrarea cu ajutorul descărcărilor Django JSON

Cea mai simplă abordare pentru migrare este utilizarea de descărcări JSON din Django. Acest lucru funcționează bine pentru instalațiile mai mici. Pe site-urile mai mari s-ar putea să doriți să folosiți în schimb pgloader, vedeți Migrarea la PostgreSQL folosind pgloader.

  1. Adăugați PostgreSQL ca conexiune suplimentară la baza de date în 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. Executați migrările și renunțați la toate datele inserate în tabele:

weblate migrate --database=postgresql
weblate sqlflush --database=postgresql | weblate dbshell --database=postgresql
  1. Aruncarea bazei de date tradiționale și importul în PostgreSQL

weblate dumpdata --all --output weblate.json
weblate loaddata weblate.json --database=postgresql
  1. Ajustați DATABASES pentru a utiliza doar baza de date PostgreSQL ca bază de date implicită, eliminați conexiunea veche.

Weblate ar trebui să fie acum gata să ruleze din baza de date PostgreSQL.

Migrarea la PostgreSQL folosind pgloader

pgloader este un instrument generic de migrare a datelor către PostgreSQL. Îl puteți utiliza pentru a migra baza de date Weblate.

  1. Ajustați fișierul settings.py pentru a utiliza PostgreSQL ca bază de date.

  2. Migrați schema din baza de date PostgreSQL:

    weblate migrate
    weblate sqlflush | weblate dbshell
    
  3. Rulați pgloader pentru a transfera datele. Următorul script poate fi folosit pentru a migra baza de date, dar poate doriți să aflați mai multe despre pgloader pentru a înțelege ce face și pentru a-l adapta la configurația dumneavoastră:

    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'
    ;
    

Migrarea de la Pootle

Deoarece Weblate a fost scris inițial ca înlocuitor pentru Pootle, este posibilă migrarea conturilor de utilizator din Pootle. Puteți să descărcați utilizatorii din Pootle și să îi importați folosind importusers.