Întrebări frecvente

Configurație

Cum se creează un flux de lucru automatizat?

Weblate se poate ocupa în mod semiautomat de toate aspectele legate de traducere. Dacă îi acordați acces push la depozitul vostru, traducerile pot avea loc fără interacțiune, cu excepția cazului în care apare un conflict de fuziune.

  1. Configurați depozitul Git pentru a anunța Weblate atunci când există vreo modificare, consultați Cârlige notificare pentru informații despre cum să faceți acest lucru.

  2. Setați o adresă URL de împingere la Configurația componentei în Weblate, acest lucru îi permite lui Weblate să împingă modificările în depozitul dumneavoastră.

  3. Activați Încarcă la comitere pe Configurația componentei în Weblate, acest lucru va face ca Weblate să împingă modificările în depozitul vostru ori de câte ori acestea se produc în Weblate.

Cum se accesează depozitele prin SSH?

Vă rugăm să consultați Accesarea depozitelor pentru informații despre configurarea cheilor SSH.

Cum se rezolvă conflictele de fuziune în traduceri?

Conflictele de fuziune apar din când în când atunci când fișierul de traducere este modificat atât în Weblate, cât și în depozitul din amonte, în același timp. De obicei, puteți evita acest lucru prin fuzionarea traducerilor Weblate înainte de a face modificări în fișierele de traducere (de exemplu, înainte de a rula msgmerge). Spuneți-i doar lui Weblate să confirme toate traducerile în așteptare (puteți face acest lucru în Repository maintenance din meniul Manage) și să fuzioneze depozitul (dacă nu este activat push-ul automat).

Dacă ați întâlnit deja un conflict de fuziune, cel mai simplu mod de a rezolva toate conflictele la nivel local pe calculatorul dumneavoastră este să adăugați Weblate ca depozit la distanță, să îl fuzionați în upstream și să rezolvați orice conflict. După ce veți împinge modificările înapoi, Weblate va putea utiliza versiunea fuzionată fără alte acțiuni speciale.

Notă

În funcție de configurația voastră, accesul la depozitul Weblate poate necesita autentificare. Atunci când utilizați Exportator Git încorporat în Weblate, vă autentificați cu numele de utilizator și cheia API.

# Open an existing checkout of the upstream repository or perform a fresh one:
git clone UPSTREAM_REPOSITORY_URL
cd REPO
# Commit all pending changes in Weblate, you can do this in the UI as well:
wlc commit
# Lock the translation in Weblate, again this can be done in the UI as well:
wlc lock
# Add Weblate as remote:
git remote add weblate https://hosted.weblate.org/git/project/component/
# You might need to include credentials in some cases:
git remote add weblate https://username:APIKEY@hosted.weblate.org/git/project/component/

# Update weblate remote:
git remote update weblate

# Merge Weblate changes:
git merge weblate/main

# Resolve conflicts:
edit …
git add …
…
git commit

# Rebase changes (if Weblate is configured to do rebases)
git rebase origin/main

# Push changes to upstream repository, Weblate will fetch merge from there:
git push

# Open Weblate for translation:
wlc unlock

Dacă folosiți mai multe ramuri în Weblate, puteți face același lucru pentru toate:

# Add and update Weblate remotes
git remote add weblate-one https://hosted.weblate.org/git/project/one/
git remote add weblate-second https://hosted.weblate.org/git/project/second/
git remote update weblate-one weblate-second

# Merge QA_4_7 branch:
git checkout QA_4_7
git merge weblate-one/QA_4_7
... # Resolve conflicts
git commit

# Merge main branch:
git checkout main
git merge weblates-second/main
... # Resolve conflicts
git commit

# Push changes to the upstream repository, Weblate will fetch the merge from there:
git push

În cazul fișierelor gettext PO, există o modalitate de fuzionare a conflictelor într-un mod semiautomat:

Obțineți și păstrați o clonă locală a depozitului Weblate Git. De asemenea, obțineți o a doua clonă locală proaspătă a depozitului Git din amonte (adică aveți nevoie de două copii ale depozitului Git din amonte: O copie intactă și o copie de lucru):

# Add remote:
git remote add weblate /path/to/weblate/snapshot/

# Update Weblate remote:
git remote update weblate

# Merge Weblate changes:
git merge weblate/main

# Resolve conflicts in the PO files:
for PO in `find . -name '*.po'` ; do
    msgcat --use-first /path/to/weblate/snapshot/$PO\
               /path/to/upstream/snapshot/$PO -o $PO.merge
    msgmerge --previous --lang=${PO%.po} $PO.merge domain.pot -o $PO
    rm $PO.merge
    git add $PO
done
git commit

# Push changes to the upstream repository, Weblate will fetch merge from there:
git push

Cum pot traduce mai multe ramuri în același timp?

Weblate suportă împingerea modificărilor de traducere în cadrul unui proiect. Pentru fiecare Configurația componentei care are activată această opțiune (comportamentul implicit), modificarea efectuată este propagată automat către celelalte. În acest fel, traducerile sunt menținute sincronizate chiar dacă ramurile în sine au avut deja divergențe destul de mari și nu este posibilă simpla îmbinare a modificărilor de traducere între ele.

Odată ce ați fuzionat modificările din Weblate, este posibil să trebuiască să fuzionați aceste ramuri (în funcție de fluxul de dezvoltare), eliminând diferențele:

git merge -s ours origin/maintenance

Cum se traduc proiectele multi-platformă?

Weblate acceptă o gamă largă de formate de fișiere (a se vedea Formate de fișiere acceptate) și cea mai simplă abordare este de a utiliza formatul nativ pentru fiecare platformă.

După ce ați adăugat toate fișierele de traducere a platformelor ca și componente într-un proiect (a se vedea Adăugarea de proiecte și componente de traducere), puteți utiliza funcția de propagare a traducerilor (activată în mod implicit și care poate fi dezactivată în Configurația componentei) pentru a traduce deodată șirurile de caractere pentru toate platformele.

Cum să exportați depozitul Git pe care îl folosește Weblate?

Nu există nimic special în legătură cu depozitul, acesta se află în directorul DATA_DIR și se numește vcs/<proiect>/<component>/. Dacă aveți acces SSH la această mașină, puteți utiliza direct depozitul.

Pentru acces anonim, ați putea dori să rulați un server Git și să îl lăsați să servească depozitul către lumea exterioară.

Alternativ, puteți utiliza Exportator Git în Weblate pentru a automatiza acest lucru.

Care sunt opțiunile pentru a împinge modificările înapoi în amonte?

Acest lucru depinde în mare măsură de configurația voastră, Weblate este destul de flexibil în acest domeniu. Iată câteva exemple de fluxuri de lucru utilizate cu Weblate:

  • Weblate împinge și îmbină automat modificările (vezi Cum se creează un flux de lucru automatizat?).

  • Îi spuneți manual lui Weblate să facă push (are nevoie de acces push la depozitul din upstream).

  • Cineva fuzionează manual modificările din depozitul git Weblate în depozitul din upstream.

  • Cineva fuzionează manual modificările din depozitul git Weblate în depozitul din upstream.

Desigur, aveți libertatea de a amesteca toate acestea după cum doriți.

Cum pot să limitez accesul la Weblate doar la traduceri, fără a expune codul sursă la acesta?

Puteți folosi git submodule pentru a separa traducerile de codul sursă, menținându-le în același timp sub controlul versiunii.

  1. Creați un depozit cu fișierele de traducere.

  2. Adăugați acest lucru ca un submodul în codul dumneavoastră:

    git submodule add git@example.com:project-translations.git path/to/translations
    
  3. Conectați Weblate la acest depozit, acesta nu mai are nevoie de acces la depozitul care conține codul vostru sursă.

  4. Puteți actualiza depozitul principal cu traduceri din Weblate prin:

    git submodule update --remote path/to/translations
    

Vă rugăm să consultați documentația git submodule pentru mai multe detalii.

Cum pot verifica dacă Weblate este configurat corect?

Weblate include un set de verificări de configurare pe care le puteți vedea în interfața de administrare, trebuie doar să urmați linkul Raport de performanță din interfața de administrare sau să deschideți direct URL-ul /manage/performance/`.

De ce sunt toate comiterile comise de Weblate <noreply@weblate.org>?

Acesta este numele implicit al autorului, configurat prin DEFAULT_COMMITER_EMAIL și DEFAULT_COMMITER_NAME.

Autorul fiecărei confirmări (în cazul în care VCS-ul suportă acest lucru) este în continuare înregistrat corect ca fiind utilizatorul care a efectuat traducerea.

În cazul angajărilor pentru care nu se cunoaște autorul (de exemplu, sugestii anonime sau rezultate de traducere automată), autorul este atribuit utilizatorului anonim (a se vedea ANONYMOUS_USER_NAME). Puteți modifica numele și adresa de e-mail în interfața de gestionare.

Cum să mutați fișiere în depozit fără a pierde istoricul în Weblate?

Pentru a păstra istoricul, comentariile sau capturile de ecran legate de șiruri de caractere după modificarea locației fișierelor, trebuie să vă asigurați că aceste șiruri de caractere nu sunt niciodată șterse în Weblate. Aceste eliminări se pot întâmpla în cazul în care depozitul Weblate este actualizat, dar configurația componentei încă indică vechile fișiere. Acest lucru face ca Weblate să presupună că ar trebui să șteargă toate traducerile.

Soluția este de a efectua operațiunea în sincronizare cu Weblate:

  1. Blocați componenta afectată în Weblate.

  2. Angajați orice modificări în așteptare și unificați-le în depozitul din upstream.

  3. Dezactivați primirea de webhooks la Configurația proiectului; acest lucru împiedică Weblate să vadă imediat modificările din depozit.

  4. Efectuați orice modificări necesare în repo (de exemplu, folosind git mv) și împingeți-le în depozitul upstream.

  5. Schimbați Configurația componentei pentru a se potrivi cu noua configurație; la schimbarea configurației, Weblate va prelua depozitul actualizat și va observa locațiile modificate, păstrând în același timp șirurile existente.

  6. Deblocați componenta și activați din nou cârligele în configurația proiectului.

Utilizare

Cum pot revizui traducerile altora?

  • Există mai multe fluxuri de lucru bazate pe revizuire disponibile în Weblate, consultați Fluxuri de lucru de traducere.

  • Puteți să vă abonați la orice modificări făcute în Notificări și apoi să verificați contribuțiile celorlalți pe măsură ce acestea sosesc prin e-mail.

  • Există un instrument de revizuire disponibil în partea de jos a vizualizării traducerilor, unde puteți alege să răsfoiți traducerile făcute de alte persoane de la o anumită dată.

Cum pot oferi feedback cu privire la un șir de surse?

Pe filele de context de sub traducere, puteți utiliza fila Comments pentru a oferi feedback cu privire la un șir sursă sau pentru a discuta cu alți traducători.

Cum pot folosi traducerile existente în timpul traducerii?

  • Toate traducerile din Weblate pot fi utilizate datorită memoriei de traducere partajate.

  • Puteți importa în Weblate fișiere de memorie de traducere existente.

  • Folosiți funcționalitatea de import pentru a încărca compendiul ca traduceri, sugestii sau traduceri care trebuie revizuite. Aceasta este cea mai bună abordare pentru o traducere unică care utilizează un compendiu sau o bază de date de traduceri similară.

  • Puteți configura tmserver cu toate bazele de date pe care le aveți și lăsați Weblate să îl folosească. Acest lucru este bun atunci când doriți să îl utilizați de mai multe ori în timpul traducerii.

  • O altă opțiune este de a traduce toate proiectele conexe într-o singură instanță Weblate, ceea ce va face ca aceasta să preia automat și traducerile din alte proiecte.

Weblate actualizează fișierele de traducere în afară de traduceri?

Weblate încearcă să limiteze la minimum modificările în fișierele de traducere. Pentru unele formate de fișiere, acest lucru ar putea duce, din păcate, la reformatarea fișierului. Dacă doriți să păstrați fișierul formatat așa cum doriți, vă rugăm să folosiți un hook precommit pentru asta.

De unde provin definițiile lingvistice și cum pot să le adaug pe ale mele?

Setul de bază de definiții lingvistice este inclus în Weblate și Translate-toolkit. Acesta acoperă mai mult de 150 de limbi și include informații despre formele de plural sau direcția textului.

Sunteți liber să vă definiți propriile limbi în interfața administrativă, trebuie doar să furnizați informații despre acestea.

Poate Weblate să evidențieze modificările într-un șir neclar?

Weblate acceptă acest lucru, însă are nevoie de date pentru a arăta diferența.

Pentru fișierele Gettext PO, trebuie să treceți parametrul --previous la msgmerge atunci când actualizați fișierele PO, de exemplu:

msgmerge --previous -U po/cs.po po/phpmyadmin.pot

Pentru traducerile monolingve, Weblate poate găsi șirul anterior după ID, astfel încât să afișeze automat diferențele.

De ce Weblate încă arată șiruri de traducere vechi atunci când am actualizat șablonul?

Weblate nu încearcă să manipuleze fișierele de traducere în nici un alt mod în afară de a permite traducătorilor să traducă. Prin urmare, nu actualizează nici fișierele traductibile atunci când șablonul sau codul sursă au fost modificate. Trebuie pur și simplu să faceți acest lucru manual și să introduceți modificările în depozit, iar Weblate va prelua apoi modificările în mod automat.

Notă

De obicei, este o idee bună să fuzionați modificările efectuate în Weblate înainte de a actualiza fișierele de traducere, deoarece, în caz contrar, vă veți trezi cu unele conflicte de fuzionat.

How to handle renaming translation files?

When renaming files in the repository, it can happen that Weblate sees this as removal and adding of the files. This can lead to losing strings history, comments and suggestions.

To avoid that, perform renaming in following steps:

  1. Lock the translation component in Managing the local VCS repository.

  2. Commit pending changes in Managing the local VCS repository.

  3. Merge Weblate changes to the upstream repository.

  4. Disable receiving updates via hooks using Activează cârlige.

  5. Perform the renaming of the files in the repository.

  6. Update the component configuration to match new file names.

  7. Enable update hooks and unlock the component.

Depanare

Cererile eșuează uneori cu eroarea „prea multe fișiere deschise”

Acest lucru se întâmplă uneori atunci când depozitul Git crește prea mult și aveți multe dintre ele. Comprimarea depozitelor Git va îmbunătăți această situație.

Cel mai simplu mod de a face acest lucru este să rulați:

# Go to DATA_DIR directory
cd data/vcs
# Compress all Git repositories
for d in */* ; do
    pushd $d
    git gc
    popd
done

Vezi și

DATA_DIR

Când accesez site-ul, primesc o eroare „Bad Request (400)”

Cel mai probabil, acest lucru este cauzat de o configurare necorespunzătoare a ALLOWED_HOSTS. Aceasta trebuie să conțină toate numele de gazdă pe care doriți să le accesați pe Weblate. De exemplu:

ALLOWED_HOSTS = ["weblate.example.com", "weblate", "localhost"]

Ce înseamnă „Există mai multe fișiere pentru o singură limbă (en)”?

Acest lucru se întâmplă de obicei atunci când aveți un fișier de traducere pentru limba sursă. Weblate ține evidența șirurilor sursă și rezervă limba sursă pentru aceasta. Fișierul suplimentar pentru aceeași limbă nu este procesat.

  • În cazul în care se dorește traducerea în limba sursă, vă rugăm să modificați Limba sursă în setările componentei. Este posibil să doriți să folosiți English (Developer) ca limbă sursă sau să utilizați Poartă de calitate pentru șirurile sursă.

  • În cazul în care fișierul de traducere pentru limba sursă nu este necesar, vă rugăm să îl eliminați din depozit.

  • În cazul în care fișierul de traducere pentru limba sursă este necesar, dar ar trebui să fie ignorat de Weblate, vă rugăm să ajustați Filtru limbă pentru a-l exclude.

Sugestie

Este posibil să primiți un mesaj de eroare similar și pentru alte limbi. În acest caz, motivul cel mai probabil este faptul că mai multe fișiere corespund unei singure limbi în Weblate.

Acest lucru poate fi cauzat de utilizarea unor coduri de limbă învechite împreună cu unul nou (ja și jp pentru japoneză) sau de includerea atât a codurilor specifice țării, cât și a codurilor generice (fr și fr_FR). Pentru mai multe detalii, consultați Parsarea codurilor lingvistice.

Caracteristici

Weblate suportă și alte VCS-uri decât Git și Mercurial?

Weblate nu are în prezent suport nativ pentru nimic altceva în afară de Git (cu suport extins pentru GitHub solicitări de tracțiune, Gerrit și Subversiune) și Mercurial, dar este posibil să se scrie backend-uri pentru alte VCS-uri.

De asemenea, puteți utiliza Ajutoare la distanță Git în Git pentru a accesa alte VCS-uri.

Weblate suportă, de asemenea, funcționarea fără VCS, vezi Fișiere locale.

Notă

Pentru suportul nativ al altor VCS-uri, Weblate necesită utilizarea VCS-urilor distribuite și ar putea fi probabil ajustat pentru a funcționa cu orice altceva în afară de Git și Mercurial, dar cineva trebuie să implementeze acest suport.

Cum creditează Weblate traducătorii?

Fiecare modificare făcută în Weblate este trimisă în VCS sub numele traducătorului. În acest fel, fiecare modificare are un autor corect și puteți să o urmăriți folosind instrumentele VCS standard pe care le folosiți pentru cod.

În plus, atunci când formatul fișierului de traducere acceptă acest lucru, anteturile fișierului sunt actualizate pentru a include numele traducătorului.

De ce Weblate forțează afișarea tuturor fișierelor PO într-un singur arbore?

Weblate a fost proiectat astfel încât fiecare fișier PO să fie reprezentat ca o singură componentă. Acest lucru este benefic pentru traducători, astfel încât aceștia să știe ce traduc de fapt.

Schimbat în versiunea 4.2: Traducătorii pot traduce toate componentele unui proiect într-o anumită limbă ca întreg.

De ce utilizează Weblate coduri de limbă precum sr_Latn sau zh_Hant?

Acestea sunt coduri de limbă definite de RFC 5646 pentru a indica mai bine faptul că sunt într-adevăr limbi diferite în loc de modificatori utilizați anterior în mod greșit (pentru variantele @latin) sau coduri de țară (pentru chineză).

Weblate înțelege în continuare codurile de limbă moștenite și le va mapa în cele actuale - de exemplu sr@latin va fi tratat ca sr_Latn sau zh@CN ca zh_Hans.

Notă

Weblate folosește în mod implicit codurile de limbă în stil POSIX cu subliniere, consultați Definiții lingvistice pentru mai multe detalii.