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.
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.
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
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.
Actualizați fișierul de configurare, consultați
settings_example.py
sau Instrucțiuni specifice versiunii pentru pașii necesari.Actualizarea structurii bazei de date:
weblate migrate --noinput
Colectează fișierele statice actualizate (a se vedea Rularea serverului și Servirea fișierelor statice):
weblate collectstatic --noinput --clear
Comprimarea fișierelor JavaScript și CSS (opțional, consultați Comprimarea activelor clienților):
weblate compress
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
Verificați dacă configurația dumneavoastră este sănătoasă (consultați și Configurarea producției):
weblate check --deploy
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 valoareMT_DEEPL_API_URL
. Este posibil să fie nevoie să ajustațiMT_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 setareaCELERY_TASK_ROUTES
.Domeniul Weblate este acum configurat în setări, vezi
SITE_DOMAIN
(sauWEBLATE_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
șiGITLAB_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 setareaCELERY_TASK_ROUTES
.
Schimbat în versiunea 4.3.2:
Metoda
post_update
a add-on-urilor acceptă acum un parametru suplimentarskip_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 șimsgctxt
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 folosindloadpo
.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ăugatweblate.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:
Există noi formate de fișiere, este posibil să doriți să le includeți în cazul în care ați modificat
WEBLATE_FORMATS
.API pentru crearea de componente utilizează acum automat URL-uri interne Weblate, a se vedea
POST /api/projects/(string:project)/components/
.Există o modificare în dependențe și în
PASSWORD_HASHERS
pentru a prefera Argon2 pentru hashing-ul parolelor.
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. SetareaMT_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 modululchardet
pentru detectarea setului de caractere.Schimbat în 4.11.1: Există o schimbare în setarea
REST_FRAMEWORK
(eliminarea unuia dintre backend-urile dinDEFAULT_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 dejava-format
șijava-format
în loc dejava-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
andGITHUB_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.
Upgrade from 4.15 to 4.16#
Vă rugăm să urmați Instrucțiuni generice de actualizare pentru a efectua actualizarea.
Celery beat is now storing the tasks schedule in the database,
CELERY_BEAT_SCHEDULER
andINSTALLED_APPS
need to be changed for that.The deprecated VCS setting for credentials is no longer supported, see Actualizare de la 4.13 la 4.14.
Upgrade of django-crispy-forms requires changes in
INSTALLED_APPS
.Integration of django-cors-headers requires changes in
INSTALLED_APPS
andMIDDLEWARE
.
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.
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": "",
},
}
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
Aruncarea bazei de date tradiționale și importul în PostgreSQL
weblate dumpdata --all --output weblate.json
weblate loaddata weblate.json --database=postgresql
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.
Ajustați fișierul
settings.py
pentru a utiliza PostgreSQL ca bază de date.Migrați schema din baza de date PostgreSQL:
weblate migrate weblate sqlflush | weblate dbshell
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
.