Weblate

Weblate este un sistem de localizare continuă bazat pe web, utilizat de peste 2500 de proiecte libere și companii din peste 165 de țări.

Instalați-l sau utilizați serviciul Weblate găzduit la weblate.org.

Website Status traducere Cele mai bune practici CII https://img.shields.io/pypi/v/weblate.svg https://readthedocs.org/projects/weblate/badge/ Licență

Asistență

Weblate este un software liber cu suport profesional opțional și oferte de găzduire în cloud. Pentru mai multe informații, consultați https://weblate.org/hosting/.

Documentație

Se găsește în directorul docs al codului sursă, sau poate fi vizualizat online pe https://docs.weblate.org/

Instalare

Instrucțiuni de instalare:

https://docs.weblate.org/en/latest/admin/install.html

Bug-uri

Vă rugăm să raportați cererile de caracteristici și problemele la:

https://github.com/WeblateOrg/weblate/issues

Licență

Copyright © 2012–2021 Michal Čihař michal@cihar.com

Acest program este software liber: îl puteți redistribui și/sau modifica în conformitate cu termenii Licenței Publice Generale GNU, așa cum a fost publicată de Free Software Foundation, fie versiunea 3 a Licenței, fie (la alegerea dumneavoastră) orice versiune ulterioară.

Acest program este distribuit în speranța că va fi util, dar FĂRĂ NICI O GARANȚIE; nici măcar garanția implicită de COMERCIALIZARE sau de ADECVARE LA UN SCOP PARTICULAR. Pentru mai multe detalii, consultați Licența publică generală GNU.

Ar fi trebuit să primiți o copie a Licenței Publice Generale GNU împreună cu acest program. În caz contrar, consultați https://www.gnu.org/licenses/.

Bazele Weblate

Structura proiectului și a componentelor

În Weblate, traducerile sunt organizate în proiecte și componente. Fiecare proiect poate conține un număr de componente, iar acestea conțin traduceri în limbi individuale. Componenta corespunde unui fișier traductibil (de exemplu GNU gettext sau Resurse de șiruri Android). Proiectele au rolul de a vă ajuta să organizați componentele în seturi logice (de exemplu, pentru a grupa toate traducerile utilizate în cadrul unei aplicații).

La nivel intern, fiecare proiect are în mod implicit traduceri ale șirurilor de caractere comune propagate în alte componente din cadrul acestuia. Acest lucru ușurează povara traducerilor repetitive și în mai multe versiuni. Propagarea traducerilor poate fi dezactivată pentru fiecare Configurația componentei folosind Permiteți propagarea traducerii în cazul în care traducerile ar trebui să fie divergente.

Înregistrare și profil de utilizator

Înregistrare

Toată lumea poate naviga prin proiecte, vizualiza traduceri sau sugera traduceri în mod implicit. Numai utilizatorii înregistrați au voie să salveze efectiv modificările și sunt creditați pentru fiecare traducere efectuată.

Vă puteți înregistra urmând câțiva pași simpli:

  1. Completați formularul de înregistrare cu acreditările dumneavoastră.

  2. Activați înregistrarea urmând linkul din e-mailul pe care îl primiți.

  3. În mod opțional, ajustați-vă profilul pentru a alege limbile pe care le cunoașteți.

Tabloul de bord

Când vă conectați, veți vedea o imagine de ansamblu a proiectelor și componentelor, precum și evoluția traducerii acestora.

Nou în versiunea 2.5.

Componentele proiectelor pe care le urmăriți sunt afișate în mod implicit și sunt însoțite de referințe încrucișate cu limbile dumneavoastră preferate.

Sugestie

Puteți trece la diferite vizualizări cu ajutorul filelor de navigare.

_images/dashboard-dropdown.png

Meniul are următoarele opțiuni:

  • Proiecte > Explorați toate proiectele în meniul principal care arată starea traducerii pentru fiecare proiect din instanța Weblate.

  • Selectarea unei limbi în meniul principal Languages va afișa starea de traducere a tuturor proiectelor, filtrată în funcție de una dintre limbile voastre principale.

  • Traduceri urmărite din tabloul de bord va afișa starea traducerilor doar pentru acele proiecte pe care le urmăriți, filtrate în funcție de limbile voastre principale.

În plus, lista derulantă poate afișa, de asemenea, orice număr de liste de componente, seturi de componente de proiect preconfigurate de administratorul Weblate, vezi Liste de componente.

Puteți configura vizualizarea personală implicită a tabloului de bord în secțiunea Preferences din setările profilului vostru de utilizator.

Notă

Atunci când Weblate este configurat pentru un singur proiect folosind SINGLE_PROJECT în fișierul settings.py (vezi Configurație), tabloul de bord nu va fi afișat, deoarece utilizatorul va fi redirecționat către un singur proiect sau o singură componentă.

Profilul utilizatorului

Profilul utilizatorului este accesibil dând clic pe pictograma utilizatorului tău în partea dreaptă sus a meniului de sus, apoi pe meniul Settings.

Profilul utilizatorului conține preferințele dumneavoastră. Numele și adresa de e-mail sunt folosite în VCS, așa că păstrați aceste informații corecte.

Notă

Toate selecțiile de limbă oferă doar limbile traduse în prezent.

Sugestie

Solicitați sau adăugați alte limbi pe care doriți să le traduceți făcând clic pe buton pentru a le face disponibile și pe acestea.

Limbi

limba interfeței

Alegeți limba în care doriți să afișați IU.

Limbi traduse

Alegeți limbile pe care preferați să le traduceți, iar acestea vor fi oferite pe pagina principală a proiectelor urmărite, astfel încât să aveți acces mai ușor la toate traducerile în fiecare dintre aceste limbi.

_images/your-translations.png

Limbi secundare

Puteți defini limbile secundare care vă sunt afișate ca ghid în timpul traducerii. Un exemplu poate fi văzut în imaginea următoare, unde limba ebraică este afișată ca secundară:

_images/secondary-language.png

Preferințe

Vizualizarea implicită a tabloului de bord

În fila Preferences, puteți alege care dintre vizualizările de tablou de bord disponibile să fie prezentate în mod implicit. Dacă alegeți Component list, trebuie să selectați ce listă de componente va fi afișată din lista derulantă Default component list.

Notificări

Abonați-vă la diverse notificări din fila Notificații. Notificările pentru evenimentele selectate din proiectele supravegheate sau administrate vă vor fi trimise pe e-mail.

Unele dintre notificări sunt trimise numai pentru evenimente în limbile dumneavoastră (de exemplu, despre noi șiruri de caractere de tradus), în timp ce altele se declanșează la nivelul componentelor (de exemplu, erori de fuziune). Aceste două grupuri de notificări sunt separate vizual în setări.

Puteți comuta notificările pentru proiectele supravegheate și proiectele administrate, iar notificările pot fi ajustate (sau pot fi dezactivate) pentru fiecare proiect și componentă. Vizitați pagina de prezentare generală a componentelor și selectați alegerea corespunzătoare din meniul Watching.

În cazul în care Automatizarea automată a proiectelor în funcție de contribuție este activată, veți începe automat să urmăriți proiectele la traducerea unui șir de caractere. Valoarea implicită depinde de DEFAULT_AUTO_WATCH.

Notă

Nu veți primi notificări pentru propriile acțiuni.

_images/profile-subscriptions.png

Cont

Fila Account vă permite să configurați detaliile de bază ale contului, să conectați diverse servicii pe care le puteți utiliza pentru a vă conecta la Weblate, să vă eliminați complet contul sau să vă descărcați datele de utilizator (a se vedea Exportul datelor de utilizator Weblate).

Notă

Lista de servicii depinde de configurația Weblate, dar poate include site-uri populare, cum ar fi GitLab, GitHub, Google, Facebook sau Bitbucket sau alți furnizori OAuth 2.0.

_images/authentication.png

Profil

Toate câmpurile de pe această pagină sunt opționale și pot fi șterse în orice moment, iar prin completarea lor, ne dați consimțământul de a partaja aceste date oriunde apare profilul dvs. de utilizator.

Avatarul poate fi afișat pentru fiecare utilizator (în funcție de ENABLE_AVATARS). Aceste imagini sunt obținute cu ajutorul https://gravatar.com/.

Licențe

Accesul la API

Puteți obține sau reseta token-ul de acces la API aici.

Jurnal de audit

Registrul de audit ține evidența acțiunilor efectuate cu contul dumneavoastră. Acesta înregistrează adresa IP și browserul pentru fiecare acțiune importantă efectuată cu contul vostru. Acțiunile critice declanșează, de asemenea, o notificare la o adresă de e-mail principală.

Traducerea folosind Weblate

Vă mulțumim pentru interesul manifestat în traducerea cu ajutorul Weblate. Proiectele pot fi configurate fie pentru traducere directă, fie prin acceptarea sugestiilor făcute de utilizatorii fără cont.

În general, există două moduri de traducere:

  • Proiectul acceptă traduceri directe

  • Proiectul acceptă doar sugestii, care sunt validate automat odată ce se atinge un anumit număr de voturi

Vă rugăm să consultați Fluxuri de lucru de traducere pentru mai multe informații despre fluxul de traducere.

Opțiuni pentru vizibilitatea proiectului de traducere:

  • Vizibil public și oricine poate contribui

  • Vizibil doar pentru un anumit grup de traducători

Proiecte de traducere

Proiectele de traducere dețin componente conexe; resurse pentru același software, carte sau proiect.

_images/project-overview.png

Sugestii

Notă

Permisiunile efective pot varia în funcție de configurația Weblate.

Utilizatorii anonimi pot doar (în mod implicit) să transmită sugestii. Acest lucru este în continuare disponibil pentru utilizatorii conectați, în cazurile în care apare o incertitudine cu privire la traducere, determinând alți traducători să o revizuiască.

Sugestiile sunt scanate zilnic pentru a elimina dublurile și sugestiile care corespund traducerii curente.

Comentarii

Pot fi postate trei tipuri de comentarii: pentru traduceri, șiruri de surse sau pentru a raporta erori ale șirurilor de surse atunci când această funcționalitate este activată folosind Activați revizuirile sursei. Alegeți-l pe cel potrivit pentru subiectul pe care doriți să îl discutați. Comentariile pentru șirurile sursă sunt în orice caz bune pentru a oferi feedback cu privire la șirul original, de exemplu că ar trebui reformulat sau pentru a pune întrebări despre acesta.

Puteți folosi sintaxa Markdown în toate comentariile și puteți menționa alți utilizatori folosind @mention.

Vezi și

raport-sursă, sursă-revizuiri, proiect-sursă_revizuire

Variante

Variantele sunt utilizate pentru a grupa variante de lungime diferită ale șirului. Frontend-ul proiectului dumneavoastră poate utiliza apoi șiruri diferite în funcție de dimensiunea ecranului sau a ferestrei.

Vezi și

variante, glossary-variante

Etichete

Etichetele sunt utilizate pentru a clasifica șirurile de caractere în cadrul unui proiect pentru a personaliza în continuare fluxul de lucru al localizării (de exemplu, pentru a defini categorii de șiruri de caractere).

Vezi și

Șir de etichete

Traducerea

Pe pagina de traducere sunt afișate șirul sursă și o zonă de editare pentru traducerea acestuia. În cazul în care traducerea este la plural, sunt afișate mai multe șiruri sursă și zone de editare, fiecare fiind descrisă și etichetată în funcție de numărul de forme de plural pe care le are limba tradusă.

Toate caracterele speciale de spații albe sunt subliniate cu roșu și indicate cu simboluri gri. Mai mult de un spațiu ulterior este, de asemenea, subliniat cu roșu pentru a atenționa traducătorul asupra unei potențiale probleme de formatare.

Pe această pagină pot fi afișate diverse informații suplimentare, majoritatea provenind din codul sursă al proiectului (cum ar fi contextul, comentariile sau locul în care este utilizat mesajul). Câmpurile de traducere pentru orice limbă secundară selectată de traducători în preferințe vor fi afișate (a se vedea Limbi secundare) deasupra șirului sursă.

Sub traducere, traducătorii vor găsi sugestii făcute de alții, care urmează să fie acceptate (✓), acceptate cu modificări (✏️) sau eliminate (🗑).

Pluralul

Cuvintele care își schimbă forma în funcție de denumirea lor numerică se numesc plural. Fiecare limbă are o definiție proprie a pluralului. Engleza, de exemplu, acceptă una. În definiția la singular, de exemplu „car”, se face referire implicit la o singură mașină, în definiția la plural, „cars”, se face referire la două sau mai multe mașini (sau la conceptul de mașini ca substantiv). Limbi ca, de exemplu, ceha sau araba au mai multe pluraluri și, de asemenea, regulile lor pentru plural sunt diferite.

Weblate are suport complet pentru fiecare dintre aceste forme, în fiecare limbă respectivă (prin traducerea fiecărui plural separat). Numărul de câmpuri și modul în care acesta este la rândul său utilizat în aplicația sau proiectul tradus depinde de formula de plural configurată. Weblate prezintă informațiile de bază, iar Language Plural Rules de către Unicode Consortium este o descriere mai detaliată.

Vezi și

Formula plurală

_images/plurals.png

Scurtături de tastatură

Schimbat în versiunea 2.18: Comenzile rapide de la tastatură au fost modernizate în versiunea 2.18 pentru a fi mai puțin susceptibile de a intra în coliziune cu setările implicite ale browserului sau ale sistemului.

Următoarele comenzi rapide de la tastatură pot fi utilizate în timpul traducerii:

Comenzi rapide de la tastatură

Descriere

Alt+Home

Navighează la prima traducere din căutarea curentă.

Alt+End

Navighează la ultima traducere din căutarea curentă.

Alt+PageUp sau

Ctrl ↑ sau

Alt ↑ sau

Cmd ↑

Navighează la traducerea anterioară în căutarea curentă.

Alt+PageDown sau

Ctrl+↓ sau

Alt+↓ sau

Cmd+↓

Navighează la următoarea traducere în căutarea curentă.

:kbd:`Alt+Enter`sau

Ctrl+Enter sau

Cmd+Enter

Salvează traducerea curentă.

Ctrl+Shift+Enter sau

Cmd+Shift+Enter

Debifați traducerea ca având nevoie de editare și trimiteți-o.

Ctrl+E sau

Cmd+E

Editor de traduceri Focus.

Ctrl+U sau

Cmd+U

Focus comentariu editor.

Ctrl+M sau

Cmd+M

Afișează fila Sugestii automate, vezi Sugestii automate.

Ctrl+1 to Ctrl+9 sau

Cmd+1 la Cmd+9

Copiază din șirul sursă un număr de locuri cu numărul dat.

Ctrl+M+1 to 9 ori

Cmd+M+1 la 9

Copiază traducerea automată a numărului dat în traducerea curentă.

Ctrl+I+1 la 9 ori

Cmd+I+1 la 9

Ignorați un element din lista de verificări nereușite.

Ctrl+J ori

Cmd+J

Afișează fila Nearby strings.

Ctrl+S ori

Cmd+S

Domeniul de căutare Focus.

Ctrl+O sau

Cmd+O

Copiază șirul sursă.

Ctrl+Y ori

Cmd+Y

Comutați indicatorul Necesită editare.

Tastatura vizuală

Un mic rând de tastatură vizuală este afișat chiar deasupra câmpului de traducere. Acest lucru poate fi util pentru a ține cont de punctuația locală (deoarece rândul este local pentru fiecare limbă în parte) sau pentru a avea la îndemână caractere care altfel sunt greu de tastat.

Simbolurile prezentate se împart în trei categorii:

  • Caracterele configurate de utilizator definite în Profilul utilizatorului

  • Caractere pentru fiecare limbă furnizate de Weblate (de exemplu, ghilimele sau caractere specifice RTL)

  • Caracterele configurate cu ajutorul SPECIAL_CHARS

_images/visual-keyboard.png

Contextul traducerii

Această descriere contextuală oferă informații conexe despre șirul curent.

Atributele șirurilor de caractere

Lucruri precum ID-ul mesajului, contextul (msgctxt) sau locația în codul sursă.

Capturi de ecran

Capturile de ecran pot fi încărcate pe Weblate pentru a-i informa mai bine pe traducători cu privire la locul și modul în care este utilizat șirul, a se vedea Context vizual pentru șiruri de caractere.

Șiruri apropiate

Afișează mesajele vecine din fișierul de traducere. De obicei, acestea sunt de asemenea utilizate într-un context similar și se dovedesc utile pentru a menține coerența traducerii.

Alte apariții

În cazul în care un mesaj apare în mai multe locuri (de exemplu, mai multe componente), această filă le afișează pe toate dacă se constată că sunt inconsecvente (a se vedea Inconsecvent). Puteți alege pe care dintre ele să o utilizați.

Memorie de traducere

Uită-te la șiruri similare traduse în trecut, vezi Memorie de traducere.

Glosar

Afișează termenii din glosarul proiectului utilizați în mesajul curent.

Modificări recente

Lista persoanelor care au modificat recent acest mesaj folosind Weblate.

Proiect

Informații despre proiect, cum ar fi instrucțiuni pentru traducători sau un director sau un link către șirul din depozitul sistemului de control al versiunilor pe care îl folosește proiectul.

Dacă doriți linkuri directe, formatul de traducere trebuie să fie compatibil.

Istoricul traducerii

Fiecare modificare este salvată în mod implicit (dacă nu este dezactivată în setările componentelor) în baza de date și poate fi anulată. Opțional, se mai poate reveni la orice lucru din sistemul de control al versiunilor de bază.

Lungimea șirului tradus

Weblate poate limita lungimea unei traduceri în mai multe moduri pentru a se asigura că șirul tradus nu este prea lung:

  • Limitarea implicită pentru traducere este de zece ori mai lungă decât șirul sursă. Acest lucru poate fi dezactivat prin LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH. În cazul în care vă loviți de această problemă, aceasta poate fi cauzată și de o traducere monolingvă configurată în mod eronat ca fiind bilingvă, ceea ce face ca Weblate să confunde cheia de traducere cu șirul sursă real. Consultați Formate bilingve și monolingve pentru mai multe informații.

  • Lungimea maximă în caractere definită de fișierul de traducere sau de steag, a se vedea Lungimea maximă a traducerii.

  • Dimensiunea maximă redată în pixeli definită de steaguri, a se vedea Dimensiunea maximă a traducerii.

Sugestii automate

Pe baza configurației și a limbii traduse, Weblate oferă sugestii din mai multe instrumente de traducere automată și Memorie de traducere. Toate traducerile automate sunt disponibile într-o singură filă a fiecărei pagini de traducere.

Vezi și

Puteți găsi lista de instrumente acceptate în Traducere automată.

Traducere automată

Puteți utiliza traducerea automată pentru a începe traducerea pe baza unor surse externe. Acest instrument se numește Traducerea automată, accesibil în meniul Instrumente, după ce ați selectat o componentă și o limbă:

_images/automatic-translation.png

Sunt posibile două moduri de funcționare:

  • Utilizarea altor componente Weblate ca sursă pentru traduceri.

  • Utilizarea serviciilor de traducere automată selectate cu traduceri care depășesc un anumit prag de calitate.

De asemenea, puteți alege ce șiruri de caractere trebuie să fie traduse automat.

Atenționare

Rețineți că acest lucru va suprascrie traducerile existente dacă este utilizat cu filtre largi, cum ar fi All strings.

Utile în mai multe situații, cum ar fi consolidarea traducerii între diferite componente (de exemplu, aplicația și site-ul său web) sau atunci când se creează o traducere pentru o nouă componentă utilizând traducerile existente (memorie de traducere).

Limitarea ratei

Pentru a evita abuzul de interfață, se aplică o limitare a vitezei la mai multe operațiuni, cum ar fi căutarea, trimiterea de formulare de contact sau traducerea. Dacă sunteți afectat de aceasta, sunteți blocat pentru o anumită perioadă până când puteți efectua din nou operațiunea.

Limitele implicite și reglajul fin sunt descrise în manualul administrativ, a se vedea Limitarea ratei.

Căutare și înlocuire

Schimbați terminologia în mod eficient sau efectuați fixarea în bloc a șirurilor de caractere utilizând Cercetare și înlocuire din meniul Unelte.

Sugestie

Nu vă faceți griji că veți strica corzile. Acesta este un proces în doi pași care arată o previzualizare a corzilor editate înainte de confirmarea modificării efective.

Editare în masă

Editarea în bloc permite efectuarea unei singure operații pe mai multe șiruri de caractere. Definiți șirurile de caractere căutându-le și stabiliți ce trebuie făcut pentru cele care corespund. Sunt acceptate următoarele operații:

Sugestie

Acest instrument se numește Bulk edit, accesibil în meniul Tools al fiecărui proiect, componentă sau traducere.

Vezi și

Bulk edit addon <addon-weblate.flags.bulk>`

Matrix View

To compare different languages efficiently you can use the matrix view. It is available on every component page under the Tools menu. First select all languages you want to compare and confirm your selection, after that you can click on any translation to open and edit it quickly.

The matrix view is also a very good starting point to find missing translations in different languages and quickly add them from one view.

Zen Mode

The Zen editor can be enabled by clicking the Zen button on the top right while translating a component. It simplifies the layout and removes additional UI elements such as Nearby strings or the Glossary.

You can select the Zen editor as your default editor using the Preferințe tab on your Profilul utilizatorului. Here you can also choose between having translations listed Top to bottom or Side by side depending on your personal preference.

Descărcarea și încărcarea traducerilor

Puteți exporta fișiere dintr-o traducere, să faceți modificări și să le importați din nou. Acest lucru permite să lucrați offline și apoi să îmbinați modificările înapoi în traducerea existentă. Acest lucru funcționează chiar dacă aceasta a fost modificată între timp.

Notă

Opțiunile disponibile pot fi limitate de setările access control <access-control>`.

Descărcarea traducerilor

Din tabloul de bord al proiectului sau al componentei, fișierele traductibile pot fi descărcate din meniul Files.

Prima opțiune este de a descărca fișierul în formatul original, așa cum este stocat în depozit. În acest caz, toate modificările în curs de aplicare în traducere sunt confirmate, iar fișierul actualizat este redat fără nicio conversie.

De asemenea, puteți descărca traducerea convertită într-unul dintre cele mai utilizate formate de localizare. Fișierele convertite vor fi îmbogățite cu datele furnizate în Weblate; cum ar fi context suplimentar, comentarii sau indicatori. Mai multe formate de fișiere sunt disponibile prin intermediul meniului FilesCustomize download:

  • gettext PO

  • XLIFF cu extensii gettext

  • XLIFF 1.1

  • TermBase eXchange

  • Schimbul de memorii de traducere

  • gettext MO (disponibil numai atunci când traducerea utilizează gettext PO)

  • CSV

  • Excel Deschidere XML

  • JSON (disponibil numai pentru traducerile monolingve)

  • Android String Resource (disponibil numai pentru traduceri monolingve)

  • Șiruri de caractere pentru iOS (disponibile numai pentru traducerile monolingve)

Sugestie

Conținutul disponibil în fișierele convertite diferă în funcție de caracteristicile formatului de fișier, puteți găsi o prezentare generală în Capabilități ale tipurilor de traducere.

_images/file-download.png

Încărcarea traducerilor

După ce ați făcut modificările, utilizați Încărcați traducerea din meniul File.

_images/file-upload.png

Formate de fișiere acceptate

Orice fișier într-un format de fișier acceptat poate fi încărcat, dar se recomandă totuși utilizarea aceluiași format de fișier ca cel utilizat pentru traducere, altfel este posibil ca unele caracteristici să nu fie traduse corespunzător.

Fișierul încărcat este fuzionat pentru a actualiza traducerea, suprascriind în mod implicit intrările existente (acest lucru poate fi dezactivat sau activat în caseta de dialog privind încărcarea).

Metode de import

Acestea sunt opțiunile prezentate la încărcarea fișierelor de traducere:

Adăugați ca traducere (translate)

Traducerile importate sunt adăugate ca traduceri. Acesta este cel mai frecvent caz de utilizare și este comportamentul implicit.

Se utilizează doar traducerile din fișierul încărcat și nu se utilizează conținut suplimentar.

Adăugați ca sugestie (suggest)

Traducerile importate sunt adăugate ca sugestii, faceți acest lucru atunci când doriți ca șirurile voastre încărcate să fie revizuite.

Se utilizează doar traducerile din fișierul încărcat și nu se utilizează conținut suplimentar.

Adăugați ca traducere care necesită editare (fuzzy)

Traducerile importate sunt adăugate ca traduceri care trebuie editate. Acest lucru poate fi util atunci când doriți ca traducerile să fie utilizate, dar și revizuite.

Se utilizează doar traducerile din fișierul încărcat și nu se utilizează conținut suplimentar.

Înlocuirea fișierului de traducere existent (replace)

Fișierul existent este înlocuit cu un nou conținut. Acest lucru poate duce la pierderea traducerilor existente, utilizați cu prudență.

Actualizarea șirurilor sursă (source)

Actualizează șirurile de caractere sursă în fișierul de traducere bilingv. Acest lucru este similar cu ceea ce face Actualizarea fișierelor PO pentru a se potrivi cu POT (msgmerge).

Această opțiune este acceptată numai pentru anumite formate de fișiere.

Adăugarea de noi șiruri de caractere (add)

Adaugă noi șiruri de caractere la traducere. Ocolește pe cele care există deja.

În cazul în care doriți atât să adăugați șiruri noi, cât și să actualizați traducerile existente, încărcați fișierul a doua oară cu Adaugați ca traducere.

Această opțiune este disponibilă numai dacă opțiunea Gestionați șirurile de caractere este activată.

Din fișierul încărcat se utilizează doar sursa, traducerea și cheia (contextul).

Gestionarea conflictelor

Definește modul de tratare a șirurilor încărcate care sunt deja traduse.

Șiruri de caractere care au nevoie de editare

Există, de asemenea, o opțiune pentru modul de tratare a șirurilor de caractere care trebuie editate în fișierul importat. Astfel de șiruri de caractere pot fi tratate într-unul dintre următoarele trei moduri: „Nu importați”, „Importați ca șir de caractere care necesită editare” sau „Importați ca tradus”.

Suprascrierea autorului

Cu permisiuni de administrator, puteți, de asemenea, să specificați autorul fișierului încărcat. Acest lucru poate fi util în cazul în care ați primit fișierul în alt mod și doriți să îl integrați în traducerile existente, menționând în același timp autorul real.

Glosar

Fiecare proiect poate include unul sau mai multe glosare ca o prescurtare pentru stocarea terminologiei. Glosarul facilitează menținerea coerenței traducerii.

Un glosar pentru fiecare limbă poate fi gestionat separat, dar acestea sunt stocate împreună ca o singură componentă, ceea ce ajută administratorii de proiecte și traducătorii multilingvi să mențină o anumită coerență între limbi. Termenii din glosar care conțin cuvinte din șirul tradus în prezent sunt afișați în bara laterală a editorului de traduceri.

Gestionarea glosarelor

Schimbat în versiunea 4.5: Glosarele sunt acum componente obișnuite de traducere și puteți utiliza toate funcțiile Weblate pentru ele - comentarea, stocarea într-un depozit la distanță sau adăugarea de explicații.

Utilizați orice componentă ca glosar activând Utilizarea ca glosar. Puteți crea mai multe glosare pentru un proiect.

Un glosar gol pentru un anumit proiect este creat automat împreună cu proiectul respectiv. Glosarele sunt partajate între toate componentele aceluiași proiect și, opțional, cu alte proiecte, utilizând Cota în proiecte din componenta glosarului respectiv.

Componenta glosar arată ca orice altă componentă din Weblate, cu o etichetă colorată adăugată:

_images/glossary-component.png

Puteți răsfoi toți termenii din glosar:

_images/glossary-browse.png

sau să le editați ca pe orice traduceri.

Termeni din glosar

Termenii din glosar sunt traduși în același mod în care sunt traduse șirurile de caractere obișnuite. Puteți activa caracteristici suplimentare utilizând meniul Tools pentru fiecare termen.

_images/glossary-tools.png

Termeni netraductibili

Nou în versiunea 4.5.

Marcarea anumitor traduceri ale termenilor din glosar ca fiind read-only prin editare în bloc, prin tastarea indicatorului sau prin utilizarea ToolsMark as read-only înseamnă că acestea nu pot fi traduse. Folosiți această opțiune pentru nume de mărci sau alți termeni care nu trebuie modificați în alte limbi. Astfel de termeni sunt evidențiați vizual în bara laterală a glosarului.

Traduceri interzise

Nou în versiunea 4.5.

Marcarea anumitor traduceri ale termenilor din glosar ca fiind interzise, prin editare în bloc, prin tastarea indicatorului sau prin utilizarea ToolsMark as forbidden translation înseamnă că acestea nu trebuie să fie utilizate. Folosiți această opțiune pentru a clarifica traducerea atunci când unele cuvinte sunt ambigue sau ar putea avea semnificații neașteptate.

Terminologie

Nou în versiunea 4.5.

Marcarea anumitor termeni din glosar ca terminologie prin editare în bloc, prin tastarea indicatorului sau prin utilizarea ToolsMark as terminology adaugă intrări pentru aceștia în toate limbile din glosar. Folosiți această opțiune pentru termenii importanți care ar trebui să fie bine gândiți și să păstreze un înțeles coerent în toate limbile.

Variante

Variantele sunt o modalitate generică de grupare a șirurilor de caractere. Toate variantele termenilor sunt enumerate în bara laterală a glosarului în timpul traducerii.

Sugestie

Puteți utiliza această opțiune pentru a adăuga abrevieri sau expresii mai scurte pentru un termen.

Verificări și reparații

Verificările de calitate ajută la detectarea erorilor comune ale traducătorului, asigurându-se că traducerea este în stare bună. Verificările pot fi ignorate în cazul unor rezultate fals pozitive.

După trimiterea unei traduceri cu o verificare nereușită, aceasta este afișată imediat utilizatorului:

_images/checks.png

Reparații automate

În plus față de Controale de calitate, Weblate poate corecta automat unele erori comune în șirurile traduse. Utilizați-o cu prudență pentru a nu adăuga erori.

Vezi și

AUTOFIX_LIST

Controale de calitate

Weblate utilizează o gamă largă de verificări de calitate a șirurilor de caractere. Următoarea secțiune le descrie pe toate în detaliu. Există, de asemenea, verificări specifice fiecărei limbi. Vă rugăm să depuneți un bug dacă se raportează ceva eronat.

Verificări de traducere

Executat la fiecare modificare a traducerii, ajutându-i pe traducători să mențină traducerile de bună calitate.

Marcaj BBcode

Sumar

BBcode în traducere nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.markup.BBCodeCheck

Indicator de ignorat

ignore-bbcode

BBCode reprezintă marcaje simple, cum ar fi, de exemplu, evidențierea părților importante ale unui mesaj cu caractere aldine sau italice.

Această verificare asigură că acestea se regăsesc și în traducere.

Notă

Metoda de detectare a BBcode este în prezent destul de simplă, astfel încât această verificare ar putea produce rezultate fals pozitive.

Cuvinte consecutive duplicate

Nou în versiunea 4.1.

Sumar

Textul conține același cuvânt de două ori la rând:

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.duplicate.DuplicateCheck

Indicator de ignorat

ignore-duplicate

Verifică dacă nu există cuvinte consecutive duplicate într-o traducere. Acest lucru indică, de obicei, o greșeală în traducere.

Sugestie

Această verificare include reguli specifice fiecărei limbi pentru a evita falsurile pozitive. În cazul în care se declanșează în mod fals în cazul dumneavoastră, anunțați-ne. A se vedea Raportarea problemelor în Weblate.

Nu respectă glosarul

Nou în versiunea 4.5.

Sumar

Traducerea nu respectă termenii definiți într-un glosar.

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.glossary.GlossaryCheck

Indicator de activare

check-glossary

Indicator de ignorat

ignore-check-glossary

Această verificare trebuie activată cu ajutorul indicatorului check-glossary (a se vedea Personalizarea comportamentului cu ajutorul stegulețelor). Vă rugăm să luați în considerare următoarele aspecte înainte de a o activa:

  • Se face o potrivire exactă a șirurilor de caractere, se așteaptă ca glosarul să conțină termeni în toate variantele.

  • Verificarea fiecărui șir de caractere în raport cu glosarul este costisitoare și va încetini orice operațiune din Weblate care implică efectuarea de verificări, cum ar fi importul de șiruri de caractere sau traducerea.

Spațiu dublu

Sumar

Traducerea conține spațiu dublu

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.chars.DoubleSpaceCheck

Indicator de ignorat

ignore-double-space

Verifică dacă spațiul dublu este prezent în traducere pentru a evita rezultatele fals pozitive la alte verificări legate de spațiu.

Verificarea este falsă atunci când se găsește un spațiu dublu în sursă, ceea ce înseamnă că spațiul dublu este intenționat.

Șiruri de caractere formatate

Verifică dacă formatarea șirurilor de caractere este reprodusă între sursă și traducere. Omiterea șirurilor de formate în traducere cauzează de obicei probleme grave, astfel încât formatarea în șiruri ar trebui să corespundă de obicei cu cea din sursă.

Weblate acceptă verificarea șirurilor de formate în mai multe limbi. Verificarea nu este activată în mod automat, ci doar dacă un șir de caractere este marcat în mod corespunzător (de exemplu, c-format pentru formatul C). Gettext adaugă această verificare în mod automat, dar probabil va trebui să o adăugați manual pentru alte formate de fișiere sau dacă fișierele PO nu sunt generate de xgettext.

Acest lucru se poate face pe unitate (a se vedea Informații suplimentare despre șirurile sursă) sau în Configurația componentei. Definirea per componentă este mai simplă, dar poate duce la rezultate fals pozitive în cazul în care șirul nu este interpretat ca un șir de formatare, ci se întâmplă să fie utilizată sintaxa șirului de format.

Sugestie

În cazul în care verificarea unui format specific nu este disponibilă în Weblate, puteți utiliza genericul Semne de poziție.

Pe lângă verificare, acest lucru va evidenția, de asemenea, șirurile de formatare pentru a le insera cu ușurință în șirurile traduse:

_images/format-highlight.png
Șir de interpolare AngularJS
Sumar

Șirurile de interpolare AngularJS nu se potrivesc cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.angularjs.AngularJSInterpolationCheck`

Indicator de activare

angularjs-format

Indicator de ignorat

ignore-angularjs-format

Exemplu de șir de formate cu nume

Soldul tău este {{amount}} {{ currency }}

Format C
Sumar

Șirul de format C nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.format.CFormatCheck

Indicator de activare

c-format

Indicator de ignorat

ignore-c-format

Exemplu simplu de șir de formate

Există %d mere

Exemplu de șir de formate de poziție

Soldul tău este %1$d %2$s

C# format
Sumar

Șirul de format C# nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.format.CSharpFormatCheck

Indicator de activare

c-sharp-format

Indicator de ignorat

ignore-c-sharp-format

Exemplu de șir de formate de poziție

Există {0} mere

Șabloane literale ECMAScript
Sumar

Literalele șablonului ECMAScript nu se potrivesc cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.format.ESTemplateLiteralsCheck

Indicator de activare

es-format

Indicator de ignorat

ignore-es-format

Exemplu de interpolare

Există ${number} mere

Interpolare i18next

Nou în versiunea 4.0.

Sumar

Interpolarea i18next nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.format.I18NextInterpolationCheck

Indicator de activare

i18next-interpolation

Indicator de ignorat

ignore-i18next-interpolation

Exemplu de interpolare

Există {{number}} mere

Exemplu de imbricare

Există $t(number) mere

ICU MessageFormat

Nou în versiunea 4.9.

Sumar

Syntax errors and/or placeholder mismatches in ICU MessageFormat strings.

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.icu.ICUMessageFormatCheck

Indicator de activare

icu-message-format

Indicator de ignorat

ignore-icu-message-format

Exemplu de interpolare

There {number, plural, one {is one apple} other {are # apples}}.

This check has support for both pure ICU MessageFormat messages as well as ICU with simple XML tags. You can configure the behavior of this check by using icu-flags:*, either by opting into XML support or by disabling certain sub-checks. For example, the following flag enables XML support while disabling validation of plural sub-messages:

xml

Enable support for simple XML tags. By default, XML tags are parsed loosely. Stray < characters are ignored if they are not reasonably part of a tag.

strict-xml

Enable support for strict XML tags. All < characters must be escaped if they are not part of a tag.

-highlight

Disable highlighting placeholders in the editor.

-require_other

Disable requiring sub-messages to have an other selector.

-submessage_selectors

Skip checking that sub-message selectors match the source.

-types

Skip checking that placeholder types match the source.

-extra

Skip checking that no placeholders are present that were not present in the source string.

-missing

Skip checking that no placeholders are missing that were present in the source string.

Additionally, when strict-xml is not enabled but xml is enabled, you can use the icu-tag-prefix:PREFIX flag to require that all XML tags start with a specific string. For example, the following flag will only allow XML tags to be matched if they start with <x::

This would match <x:link>click here</x:link> but not <strong>this</strong>.

format Java
Sumar

Șirul de format Java nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.format.JavaFormatCheck

Indicator de activare

java-format

Indicator de ignorat

ignore-java-format

Exemplu simplu de șir de formate

Există %d mere

Exemplu de șir de formate de poziție

Soldul tău este %1$d %2$s

Mesaj în format Java
Sumar

Șirul Java MessageFormat nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.format.JavaMessageFormatCheck

Indicator de activare necodificată

java-messageformat

Indicator pentru activarea autodetecției

auto-java-messageformat activează verificarea doar dacă există un șir de format în sursă

Indicator de ignorat

ignore-java-messageformat

Exemplu de șir de formate de poziție

Există {0} mere

Format JavaScript
Sumar

Șirul de format JavaScript nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.format.JavaScriptFormatCheck

Indicator de activare

javascript-format

Indicator de ignorat

ignore-javascript-format

Exemplu simplu de șir de formate

Există %d mere

Formatul Lua
Sumar

Șirul de format Lua nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.format.LuaFormatCheck

Indicator de activare

lua-format

Indicator de ignorat

ignore-lua-format

Exemplu simplu de șir de formate

Există %d mere

Formatul Object Pascal
Sumar

Șirul de format Object Pascal nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

Șiruri de caractere formatate, L Lua formatting strings

Indicator de activare

object-pascal-format

Indicator de ignorat

ignore-object-pascal-format

Exemplu simplu de șir de formate

Există %d mere

Procentaje de marcaj

Nou în versiunea 4.0.

Sumar

Procentajele nu se potrivesc cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.format.PercentPlaceholdersCheck

Indicator de activare

percent-placeholders

Indicator de ignorat

ignore-percent-placeholders

Exemplu simplu de șir de formate

Există %număr% mere

Formatul Perl
Sumar

Șirul de format Perl nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.format.PerlFormatCheck

Indicator de activare

perl-format

Indicator de ignorat

ignore-perl-format

Exemplu simplu de șir de formate

Există %d mere

Exemplu de șir de formate de poziție

Soldul tău este %1$d %2$s

Formatul PHP
Sumar

Șirul de format PHP nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.format.PHPFormatCheck

Indicator de activare

php-format

Indicator de ignorat

ignore-php-format

Exemplu simplu de șir de formate

Există %d mere

Exemplu de șir de formate de poziție

Soldul tău este %1$d %2$s

Formatul de bretea Python
Sumar

Șirul de format Python brace nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.format.PythonBraceFormatCheck

Indicator de activare

python-brace-format

Indicator de ignorat

ignore-python-brace-format

Șir de format simplu

Există {} mere

Exemplu de șir de formate cu nume

Soldul tău este {amount} {currency}

Vezi și

Șiruri de caractere formatate, Python brace format, Python Format Strings <https://www.gnu.org/software/gettext/manual/html_node/python_002dformat.html>`

Format Python
Sumar

Șirul de format Python nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.format.PythonFormatCheck

Indicator de activare

python-format

Indicator de ignorat

ignore-python-format

Șir de format simplu

Există %d mere

Exemplu de șir de formate cu nume

Soldul tău este %(amount)d %(currency)s

Formatul Qt
Sumar

Șirul de format Qt nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.qt.QtFormatCheck

Indicator de activare

qt-format

Indicator de ignorat

ignore-qt-format

Exemplu de șir de formate de poziție

Există %1 mere

Formatul plural Qt
Sumar

Șirul de formate Qt plural nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.qt.QtPluralCheck`

Indicator de activare

qt-plural-format

Indicator de ignorat

ignore-qt-plural-format

Exemplu de șir de formate la plural

``Există %Ln măr(uri) ``

Formatul Ruby
Sumar

Șirul de format Ruby nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.ruby.RubyFormatCheck

Indicator de activare

ruby-format

Indicator de ignorat

ignore-ruby-format

Exemplu simplu de șir de formate

Există %d mere

Exemplu de șir de formate de poziție

Soldul tău este %1$f %2$s

Exemplu de șir de formate cu nume

Soldul tău este de %+.2<sume>f %<valută>s

Șir de șabloane cu nume

Soldul tău este de %{amount} %{currency}

Formatul schemei
Sumar

Șirul de format al schemei nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.format.SchemeFormatCheck

Indicator de activare

scheme-format

Indicator de ignorat

ignore-scheme-format

Exemplu simplu de șir de formate

Există ~d mere

Formatare Vue I18n
Sumar

Formatarea Vue I18n nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.format.VueFormattingCheck

Indicator de activare

vue-format

Indicator de ignorat

ignore-vue-format

Formatare cu nume

Există {count} mere

Formatarea Rails i18n

There are %{count} apples

Mesaje locale legate

@:message.dio @:message.the_world!

A fost tradus

Sumar

Acest șir a fost tradus în trecut

Domeniul de aplicare

toate șirurile de caractere

Verifică clasa

weblate.checks.consistency.TranslatedCheck

Indicator de ignorat

ignore-translated

Înseamnă că un șir a fost deja tradus. Acest lucru se poate întâmpla atunci când traducerile au fost anulate în VCS sau pierdute în alt mod.

Inconsecvent

Sumar

Acest șir are mai multe traduceri în acest proiect sau nu este tradus în anumite componente.

Domeniul de aplicare

toate șirurile de caractere

Verifică clasa

weblate.checks.consistency.ConsistencyCheck

Indicator de ignorat

ignore-inconsistent

Weblate verifică traducerile aceluiași șir de caractere în toate traducerile din cadrul unui proiect pentru a vă ajuta să păstrați coerența traducerilor.

Verificarea eșuează în cazul traducerilor diferite ale unui șir de caractere în cadrul unui proiect. Acest lucru poate duce, de asemenea, la neconcordanțe în verificările afișate. Puteți găsi alte traduceri ale acestui șir de caractere în fila Other occurrences.

Sugestie

Din motive de performanță, este posibil ca verificarea să nu găsească toate neconcordanțele, ci limitează numărul de rezultate.

Notă

Această verificare se declanșează și în cazul în care șirul este tradus într-o componentă și nu în alta. Poate fi utilizată ca o modalitate rapidă de a gestiona manual șirurile de caractere care nu sunt traduse în anumite componente, făcând clic pe butonul Utilizează această traducere afișat pe fiecare linie din fila Alte ocurențe.

Puteți utiliza addon-ul Traducere automată pentru a automatiza traducerea șirurilor nou adăugate care sunt deja traduse într-o altă componentă.

Scrisoarea Kashida folosită

Nou în versiunea 3.5.

Sumar

Literele decorative kashida nu trebuie să fie folosite

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.chars.KashidaCheck

Indicator de ignorat

ignore-kashida

Literele decorative Kashida nu ar trebui să fie folosite în traducere. Acestea sunt cunoscute și sub numele de Tatweel.

Referințe Markdown

Nou în versiunea 3.5.

Sumar

Referințele de legătură Markdown nu se potrivesc cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.markup.MarkdownRefLinkCheck

Indicator de activare

md-text

Indicator de ignorat

ignore-md-reflink

Referințele de legătură Markdown nu se potrivesc cu sursa.

Sintaxa Markdown

Nou în versiunea 3.5.

Sumar

Sintaxa Markdown nu se potrivește cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.markup.MarkdownSyntaxCheck

Indicator de activare

md-text

Indicator de ignorat

ignore-md-syntax

Sintaxa Markdown nu se potrivește cu sursa

Lungimea maximă a traducerii

Sumar

Traducerea nu trebuie să depășească lungimea dată

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.chars.MaxLengthCheck

Indicator de activare

max-length

Indicator de ignorat

ignore-max-length

Verifică dacă traducerile au o lungime acceptabilă pentru a se potrivi cu spațiul disponibil. Se verifică numai lungimea caracterelor de traducere.

Spre deosebire de celelalte verificări, indicatorul trebuie setat ca o pereche key:value, cum ar fi max-length:100.

Sugestie

Această verificare se uită la numărul de caractere, ceea ce ar putea să nu fie cea mai bună măsură atunci când se utilizează fonturi proporționale pentru a reda textul. Verificarea Dimensiunea maximă a traducerii verifică redarea efectivă a textului.

Indicatorul replacements: ar putea fi de asemenea util pentru a extinde elementele care pot fi plasate înainte de a verifica șirul.

When xml-text flag is also used, the length calculation ignores XML tags.

Dimensiunea maximă a traducerii

Sumar

Textul redat în traducere nu trebuie să depășească dimensiunea dată

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.render.MaxSizeCheck

Indicator de activare

max-size

Indicator de ignorat

ignore-max-size

Nou în versiunea 3.7.

Textul redat în traducere nu trebuie să depășească dimensiunea dată. Aceasta redă textul cu înfășurarea liniilor și verifică dacă acesta se încadrează în limitele date.

Această verificare are nevoie de unul sau doi parametri - lățimea maximă și numărul maxim de linii. În cazul în care numărul de rânduri nu este furnizat, se ia în considerare un text de un rând.

De asemenea, puteți configura fontul utilizat prin directivele font-* (a se vedea Personalizarea comportamentului cu ajutorul stegulețelor), de exemplu, următoarele indicatori de traducere spun că textul redat cu fontul ubuntu de dimensiune 22 trebuie să încapă pe două linii și 500 de pixeli:

max-size:500:2, font-family:ubuntu, font-size:22

Sugestie

Este posibil să doriți să setați directivele font-* în Configurația componentei pentru a avea același font configurat pentru toate șirurile de caractere dintr-o componentă. Puteți suprascrie aceste valori pentru fiecare șir de caractere, în cazul în care aveți nevoie să le personalizați pentru fiecare șir.

Indicatorul replacements: ar putea fi de asemenea util pentru a extinde elementele care pot fi plasate înainte de a verifica șirul.

When xml-text flag is also used, the length calculation ignores XML tags.

Nepotrivit \n

Sumar

Numărul de \n din traducere nu corespunde cu cel din sursă

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.chars.EscapedNewlineCountingCheck

Indicator de ignorat

ignore-escaped-newline

De obicei, liniile noi scăpate sunt importante pentru formatarea ieșirii programului. Verificarea eșuează în cazul în care numărul de literali \n din traducere nu corespunde cu cel din sursă.

Două puncte nepotrivite

Sumar

Sursa și traducerea nu se termină amândouă cu două puncte

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.chars.EndColonCheck

Indicator de ignorat

ignore-end-colon

Verifică dacă colonele sunt replicate atât între sursă, cât și între traducere. Prezența coloneilor este, de asemenea, verificată pentru diferite limbi în care nu au ce căuta (chineză sau japoneză).

Elipsa nepotrivită

Sumar

Sursa și traducerea nu se termină amândouă cu o elipsă

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.chars.EndEllipsisCheck

Indicator de ignorat

ignore-end-ellipsis

Verifică dacă elipsele de urmărire sunt reproduse atât la sursă, cât și la traducere. Se verifică numai pentru elipsele reale (...), nu pentru trei puncte (...).

O elipsă este, de obicei, redată mai frumos decât trei puncte în scris și sună mai bine în text-to-speech.

Semnul exclamării nepotrivit

Sumar

Sursa și traducerea nu se termină amândouă cu semnul exclamării

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.chars.EndExclamationCheck

Indicator de ignorat

ignore-end-exclamation

Verifică dacă exclamațiile sunt reproduse între sursă și traducere. Prezența semnelor de exclamare este, de asemenea, verificată pentru diferite limbi în care acestea nu își au locul (chineză, japoneză, coreeană, armeană, limbu, Myanmar sau Nko).

Punct final nepotrivit

Sumar

Sursa și traducerea nu se termină amândouă cu punct și virgulă

Domeniul de aplicare

șiruri traduse

Verifică clasa

Subclasa weblate.checks.Check

Indicator de ignorat

ignore-end-stop

Verifică dacă punctele de suspensie sunt reproduse atât la sursă, cât și la traducere. Prezența punctelor de suspensie este verificată pentru diferite limbi în care acestea nu au ce căuta (chineză, japoneză, devanagari sau urdu).

Semn de întrebare nepotrivit

Sumar

Sursa și traducerea nu se termină amândouă cu un semn de întrebare

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.chars.EndQuestionCheck

Indicator de ignorat

ignore-end-question

Verifică dacă semnele de întrebare sunt reproduse atât la sursă, cât și la traducere. Prezența semnelor de întrebare este, de asemenea, verificată pentru diferite limbi în care acestea nu își au locul (armeană, arabă, chineză, coreeană, japoneză, etiopiană, vai sau coptă).

Punct și virgulă nepotrivit

Sumar

Sursa și traducerea nu se termină amândouă cu punct și virgulă

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.chars.EndSemicolonCheck

Indicator de ignorat

ignore-end-semicolon

Verifică dacă punctele și virgulele de la sfârșitul propozițiilor sunt reproduse atât în sursă, cât și în traducere. Acest lucru poate fi util pentru a păstra formatarea intrărilor, cum ar fi fișierele de birou.

Întreruperi de linie nepotrivite

Sumar

Numărul de linii noi din traducere nu corespunde sursei

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.chars.NewLineCountCheck

Indicator de ignorat

ignore-newline-count

De obicei, liniile noi sunt importante pentru formatarea ieșirii programului. Verificarea eșuează în cazul în care numărul de litere``n`` din traducere nu corespunde cu cel din sursă.

Lipsește pluralul

Sumar

Unele forme de plural nu sunt traduse

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.consistency.PluralsCheck

Indicator de ignorat

ignore-plurals

Verifică dacă toate formele de plural ale unui șir sursă au fost traduse. Detaliile privind modul în care este utilizată fiecare formă de plural se găsesc în definiția șirului.

Dacă nu se completează formele de plural, în unele cazuri nu se va afișa nimic atunci când forma de plural este utilizată.

Semne de poziție

Nou în versiunea 3.9.

Sumar

Traducerea lipsește unele placeholders

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.placeholders.PlaceholderCheck

Indicator de activare

placeholders

Indicator de ignorat

ignore-placeholders

Schimbat în versiunea 4.3: Puteți utiliza o expresie regulată ca spațiu liber.

Traducerea lipsește unele caractere de poziție. Acestea sunt fie extrase din fișierul de traducere, fie definite manual cu ajutorul steagului placeholders, mai multe pot fi separate prin două puncte, iar șirurile de caractere cu spațiu pot fi citate:

placeholders:$URL$:$TARGET$:"some long text"

În cazul în care aveți o anumită sintaxă pentru caractere de poziție, puteți utiliza o expresie regulată:

placeholders:r"%[^% ]%"

Spațierea punctuației

Nou în versiunea 3.9.

Sumar

Lipsesc spațiile neîntreruptibile înainte de semnul dublu de punctuație

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.chars.PunctuationSpacingCheck

Indicator de ignorat

ignore-punctuation-spacing

Verifică dacă există un spațiu neîntrerupt înainte de semnul de punctuație dublu (semnul exclamării, semnul întrebării, punctul și virgula și două puncte). Această regulă este utilizată numai în câteva limbi selectate, cum ar fi franceza sau bretona, unde spațiul înainte de semnul dublu de punctuație este o regulă tipografică.

Expresie regulată

Nou în versiunea 3.9.

Sumar

Traducerea nu se potrivește cu expresia regulată:

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.placeholders.RegexCheck

Indicator de activare

regex

Indicator de ignorat

ignore-regex

Traducerea nu se potrivește cu expresia regulată. Expresia este fie extrasă din fișierul de traducere, fie definită manual cu ajutorul indicatorului regex:

regex:^foo|bar$

Același plural

Sumar

Unele forme de plural sunt traduse în același mod

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.consistency.SamePluralsCheck

Indicator de ignorat

ignore-same-plurals

Verificare care eșuează în cazul în care unele forme de plural sunt duplicate în traducere. În majoritatea limbilor, acestea trebuie să fie diferite.

Începutul liniei noi

Sumar

Sursa și traducerea nu încep ambele cu o linie nouă

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.chars.BeginNewlineCheck

Indicator de ignorat

ignore-begin-newline

De obicei, liniile de început apar în șirurile sursă pentru un motiv întemeiat; omisiunile sau adăugările pot duce la probleme de formatare atunci când textul tradus este utilizat.

Spații de pornire

Sumar

Sursa și traducerea nu încep ambele cu același număr de spații

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.chars.BeginSpaceCheck

Indicator de ignorat

ignore-begin-space

Un spațiu la începutul unui șir de caractere este de obicei utilizat pentru indentare în interfață și, prin urmare, este important să fie păstrat.

Linie nouă de urmărire

Sumar

Sursa și traducerea nu se termină ambele cu o linie nouă

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.chars.EndNewlineCheck

Indicator de ignorat

ignore-end-newline

De obicei, liniile de început apar în șirurile sursă pentru un motiv întemeiat; omisiunile sau adăugările pot duce la probleme de formatare atunci când textul tradus este utilizat.

Spațiu de urmărire

Sumar

Sursa și traducerea nu se termină amândouă cu un spațiu

Domeniul de aplicare

șiruri traduse

Verifică clasa

Subclasa weblate.checks.Check

Indicator de ignorat

ignore-end-space

Verifică dacă spațiile din urmă sunt reproduse atât la sursă, cât și la traducere.

Spațiul final este, de obicei, utilizat pentru a distanța elementele vecine, astfel încât eliminarea lui ar putea afecta aspectul.

Traducere neschimbată

Sumar

Sursa și traducerea sunt identice

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.same.SameCheck

Indicator de ignorat

ignore-same

Se întâmplă în cazul în care șirurile de caractere sursă și traducerea corespunzătoare sunt identice, până la cel puțin una dintre formele de plural. Unele șiruri care se găsesc în mod obișnuit în toate limbile sunt ignorate, iar diverse marcaje sunt eliminate. Acest lucru reduce numărul de rezultate fals pozitive.

Această verificare poate ajuta la găsirea șirurilor de caractere netraduse din greșeală.

Comportamentul implicit al acestei verificări este de a exclude din verificare cuvintele din lista neagră încorporată. Acestea sunt cuvinte care frecvent nu sunt traduse. Acest lucru este util pentru a evita falsurile pozitive în cazul șirurilor scurte, care constau doar dintr-un singur cuvânt care este același în mai multe limbi. Această listă neagră poate fi dezactivată prin adăugarea indicatorului strict-same la șirul de caractere sau la componentă.

HTML nesigur

Nou în versiunea 3.9.

Sumar

Traducerea folosește marcaje HTML nesigure

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.markup.SafeHTMLCheck

Indicator de activare

safe-html

Indicator de ignorat

ignore-safe-html

Traducerea utilizează marcaje HTML nesigure. Această verificare trebuie să fie activată cu ajutorul steagului safe-html (a se vedea Personalizarea comportamentului cu ajutorul stegulețelor). Există, de asemenea, un autofixer însoțit care poate curăța automat marcajul.

Sugestie

When md-text flag is also used, the Markdown style links are also allowed.

Vezi și

Verificarea HTML este efectuată de biblioteca Bleach dezvoltată de Mozilla.

URL

Nou în versiunea 3.5.

Sumar

Traducerea nu conține un URL

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.markup.URLCheck

Indicator de activare

url

Indicator de ignorat

ignore-url

Traducerea nu conține un URL. Acest lucru se declanșează numai în cazul în care unitatea este marcată ca conținând un URL. În acest caz, traducerea trebuie să fie un URL valid.

Marcarea XML

Sumar

Etichetele XML din traducere nu se potrivesc cu sursa

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.markup.XMLTagsCheck

Indicator de ignorat

ignore-xml-tags

Acest lucru înseamnă, de obicei, că rezultatul va arăta diferit. În cele mai multe cazuri, acesta nu este un rezultat dorit în urma modificării traducerii, dar ocazional este.

Verifică dacă etichetele XML sunt reproduse între sursă și traducere.

Notă

Această verificare este dezactivată de indicatorul safe-html, deoarece curățarea HTML efectuată de acesta poate produce marcaje HTML care nu sunt XML valide.

Sintaxa XML

Nou în versiunea 2.8.

Sumar

Traducerea nu este validă XML

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.markup.XMLValidityCheck`

Indicator de ignorat

ignore-xml-invalid

Marcajul XML nu este valid.

Notă

Această verificare este dezactivată de indicatorul safe-html, deoarece curățarea HTML efectuată de acesta poate produce marcaje HTML care nu sunt XML valide.

Spațiu cu lățime zero

Sumar

Traducerea conține un caracter suplimentar de spațiu cu lățimea zero

Domeniul de aplicare

șiruri traduse

Verifică clasa

weblate.checks.chars.ZeroWidthSpaceCheck

Indicator de ignorat

ignore-zero-width-space

Caracterele de spațiu de lățime zero (<U+200B>) sunt utilizate pentru a întrerupe mesajele în cadrul cuvintelor (word wrapping).

Deoarece acestea sunt de obicei inserate din greșeală, această verificare este declanșată odată ce sunt prezente în traducere. Unele programe ar putea avea probleme atunci când se utilizează acest caracter.

Verificări la sursă

Verificările sursei pot ajuta dezvoltatorii să îmbunătățească calitatea șirurilor sursă.

Elipsă

Sumar

Șirul de caractere utilizează trei puncte (….) în loc de un caracter de elipsă (…)

Domeniul de aplicare

șiruri de surse

Verifică clasa

weblate.checks.source.EllipsisCheck

Indicator de ignorat

ignore-ellipsis

Acest lucru eșuează atunci când șirul folosește trei puncte (...) când ar trebui să folosească un caracter de elipsă (...).

Utilizarea caracterului Unicode este, în majoritatea cazurilor, cea mai bună abordare și are un aspect mai bine redat și poate suna mai bine cu text-to-speech.

ICU MessageFormat syntax

Nou în versiunea 4.9.

Sumar

Syntax errors in ICU MessageFormat strings.

Domeniul de aplicare

șiruri de surse

Verifică clasa

weblate.checks.icu.ICUSourceCheck

Indicator de ignorat

ignore-icu-message-format-syntax

Lungă netradusă

Nou în versiunea 4.1.

Sumar

Șirul nu a mai fost tradus de mult timp

Domeniul de aplicare

șiruri de surse

Verifică clasa

weblate.checks.source.LongUntranslatedCheck

Indicator de ignorat

ignore-long-untranslated

Atunci când șirul nu a fost tradus de mult timp, acest lucru poate indica o problemă în șirul sursă, ceea ce îl face greu de tradus.

Controale multiple eșuate

Sumar

Traducerile în mai multe limbi au verificări eșuate

Domeniul de aplicare

șiruri de surse

Verifică clasa

weblate.checks.source.MultipleFailingCheck

Indicator de ignorat

ignore-multiple-failures

Numeroase traduceri ale acestui șir de caractere au eșuat la controalele de calitate. Acesta este, de obicei, un indiciu că se poate face ceva pentru a îmbunătăți șirul sursă.

Acest eșec al verificării poate fi cauzat destul de des de un punct de suspensie lipsă la sfârșitul unei propoziții sau de probleme minore similare pe care traducătorii au tendința de a le rezolva în traducere, în timp ce ar fi mai bine să le rezolve în șirul sursă.

Variabile multiple fără nume

Nou în versiunea 4.1.

Sumar

Există mai multe variabile fără nume în șir, ceea ce face imposibilă reordonarea lor de către traducători

Domeniul de aplicare

șiruri de surse

Verifică clasa

weblate.checks.format.MultipleUnnamedFormatsCheck

Indicator de ignorat

ignore-unnamed-format

Există mai multe variabile fără nume în șirul de caractere, ceea ce face imposibilă reordonarea acestora de către traducători.

Luați în considerare utilizarea variabilelor numite pentru a permite traducătorilor să le reordoneze.

Nepluralizat

Sumar

Șirul este folosit la plural, dar nu se folosesc formele de plural

Domeniul de aplicare

șiruri de surse

Verifică clasa

weblate.checks.source.OptionalPluralCheck

Indicator de ignorat

ignore-optional-plural

Șirul este folosit ca plural, dar nu folosește forme de plural. În cazul în care sistemul vostru de traducere suportă acest lucru, ar trebui să folosiți varianta conștientă de plural a acestuia.

De exemplu, cu Gettext în Python ar putea fi:

from gettext import ngettext

print ngettext("Selected %d file", "Selected %d files", files) % files

Căutare

Nou în versiunea 3.9.

Pentru a găsi șirurile de caractere dorite pot fi utilizate interogări avansate care utilizează operații booleene, paranteze sau căutări specifice unui câmp.

În cazul în care nu este definit niciun câmp, căutarea se face în câmpurile Source, Translate și Context.

_images/search.png

Domenii

sursa:TEXT

Source string case-insensitive search.

— țintă:TEXT

Target string case-insensitive search.

context:TEXT

Context string case-insensitive search.

key:TEXT

Key string case-insensitive search.

note:TEXT

Comment string case-insensitive search.

locație:TEXT

Location string case-insensitive search.

prioritate:NUMĂR`

Șir de caractere prioritate.

added:DATETIME

Timestamp pentru momentul în care șirul a fost adăugat la Weblate.

stat:TEXT

Căutare de stare (approved, translated, needs-editing, empty, read-only), suportă Operatori de teren.

în așteptare:BOOLEAN

Șir în așteptare pentru a fi trimis în VCS.

`` are:TEXT``

Caută șiruri de caractere care au atributele - plural, context, sugestie, comentariu, verificare, verificare respinsă, traducere, variantă, captură de ecran, flags, explicație, glosar, nota.

este:TEXT

Căutați stările șirurilor de caractere (pending, translated, untranslated).

limbă:TEXT

Șir de caractere limba țintă.

componenta:TEXT

Component slug or name case-insensitive search, see Componenta slug and Denumirea componentei.

proiect:TEXT

Denumirea proiectului, a se vedea URL slug.

changed_by:TEXT

Șirul a fost modificat de autor cu numele de utilizator dat.

modificat:DATETIME`

Conținutul șirului a fost modificat la data, suportă Operatori de teren.

change_time:DATETIME

Șirul de caractere a fost modificat la data, suportă Operatori de teren, spre deosebire de changed, acesta include evenimente care nu schimbă conținutul și puteți aplica o acțiune de filtrare personalizată folosind change_action.

change_action:TEXT

Filtrează pe acțiunea de modificare, util împreună cu change_time. Acceptă numele în limba engleză al acțiunii de modificare, fie citat și cu spații, fie minuscul și spațiile înlocuite cu o cratimă. A se vedea Căutarea de schimbări pentru exemple.

check:TEXT

Șirul are o verificare eșuată.

dismissed_check:TEXT

Șirul a respins verificarea.

comentariu:TEXT

Căutați în comentariile utilizatorilor.

comment_author:TEXT

Filtrați după autorul comentariului.

sugestie:TEXT

Căutați în sugestii.

sugestie_autor:TEXT

Filtrați după autorul sugestiei.

explanation:TEXT

Căutați în explicații.

Operatori booleeni

Puteți combina căutările folosind AND, OR, NOT și paranteze pentru a forma interogări complexe. De exemplu: state:translated AND (source:hello OR source:bar)

Operatori de teren

Puteți specifica operatori, intervale sau căutări parțiale pentru căutări de date sau numerice:

state:>=translated

Statul este translated sau mai bine (approbat).

changed:2019

Modificat în anul 2019.

modificat:[2019-03-01 la 2019-04-01]

Modificat între două date date .

Operatori exacți

Puteți efectua o interogare cu potrivire exactă pe diferite câmpuri de șiruri de caractere folosind operatorul =. De exemplu, pentru a căuta toate șirurile sursă care se potrivesc exact cu hello world, utilizați: source:="hello world". Pentru căutarea expresiilor cu un singur cuvânt, puteți sări peste ghilimele. De exemplu, pentru a căuta toate șirurile sursă care se potrivesc cu hello, puteți utiliza source:=hello.

Căutarea de schimbări

Nou în versiunea 4.4.

Căutarea evenimentelor din istoric se poate face folosind operatorii change_action și change_time.

De exemplu, căutarea șirurilor marcate pentru editare în 2018 poate fi introdusă ca change_time:2018 AND change_action:marked-for-edit sau change_time:2018 AND change_action: "Marked for edit".

Expresii regulate

Oriunde este acceptat un text, puteți specifica și o expresie regulată ca r "regexp".

De exemplu, pentru a căuta toate șirurile sursă care conțin orice cifră între 2 și 5, utilizați source:r"[2-5]".

Interogări predefinite

Puteți selecta din interogările predefinite pe pagina de căutare, ceea ce vă permite să accesați rapid cele mai frecvente căutări:

_images/query-dropdown.png

Ordonarea rezultatelor

Există multe opțiuni pentru a comanda șirurile în funcție de nevoile dumneavoastră:

_images/query-sort.png

Fluxuri de lucru de traducere

Utilizarea Weblate este un proces care vă aduce utilizatorii mai aproape de dumneavoastră, apropiindu-vă pe dumneavoastră de traducătorii dumneavoastră. Depinde de dumneavoastră să decideți câte dintre caracteristicile sale doriți să utilizați.

Următoarea nu este o listă completă a modalităților de configurare a Weblate. Puteți să vă bazați alte fluxuri de lucru pe cele mai uzuale exemple enumerate aici.

Acces la traducere

controlul de acces nu este discutat în detaliu în ansamblul fluxurilor de lucru, deoarece majoritatea opțiunilor sale pot fi aplicate la orice flux de lucru. Vă rugăm să consultați documentația respectivă cu privire la modul de gestionare a accesului la traduceri.

În capitolele următoare, orice utilizator înseamnă un utilizator care are acces la traducere. Acesta poate fi orice utilizator autentificat dacă proiectul este public sau un utilizator care are permisiunea Translate pentru proiect.

Statele de traducere

Fiecare șir tradus poate fi în una dintre următoarele stări:

Netradus

Traducerea este goală, aceasta poate fi sau nu stocată în fișier, în funcție de formatul fișierului.

Necesită editare

Traducerea trebuie editată, de obicei ca urmare a unei modificări a șirului sursă, a unei corespondențe neclare sau a unei acțiuni a traducătorului. Traducerea este stocată în fișier și, în funcție de formatul fișierului, ar putea fi marcată ca necesitând editare (de exemplu, deoarece primește un indicator fuzzy în fișierul Gettext).

În așteptare pentru revizuire

Traducerea se face, dar nu se revizuiește. Aceasta este stocată în dosar ca fiind o traducere validă.

Aprobat

Traducerea a fost aprobată în cadrul revizuirii. Aceasta nu mai poate fi modificată de către traducători, ci doar de către revizori. Traducătorii pot adăuga doar sugestii la ea.

Sugestii

Sugestiile sunt stocate doar în Weblate și nu în fișierul de traducere.

Statele sunt reprezentate în fișierele de traducere atunci când este posibil.

Sugestie

În cazul în care formatul de fișier pe care îl utilizați nu acceptă stocarea stărilor, ați putea dori să utilizați addon-ul Marcați traducerile neschimbate ca fiind „Needs editing” pentru a marca șirurile neschimbate ca necesitând editare.

Traducere directă

Aceasta este cea mai obișnuită configurație pentru echipele mici, oricine poate traduce direct. Aceasta este, de asemenea, configurația implicită în Weblate.

  • Care utilizator poate edita traduceri.

  • Sugestiile sunt modalități opționale de a sugera modificări, atunci când traducătorii nu sunt siguri în legătură cu modificarea.

Setarea

Valoare

Notă

Activați recenzii

oprit

Configurat la nivel de proiect.

Activați sugestiile

pe

Este util ca utilizatorii să poată sugera atunci când nu sunt siguri.

Votul prin sugestie

oprit

Sugestii de autoacceptare

0

Grupul de traducători

Utilizatori

Sau Translate cu control de acces pentru fiecare proiect.

Grupul de recenzenți

N/A

Nu a fost folosit.

Evaluare reciprocă

Cu acest flux de lucru, oricine poate adăuga sugestii și are nevoie de aprobarea unui membru sau a unor membri suplimentari înainte de a fi acceptată ca traducere.

  • Care utilizator poate adăuga sugestii.

  • Care utilizator poate vota pentru sugestii.

  • Sugestiile devin traduceri atunci când primesc un număr prestabilit de voturi.

Setarea

Valoare

Notă

Activați recenzii

oprit

Configurat la nivel de proiect.

Activați sugestiile

pe

Votul prin sugestie

oprit

Sugestii de autoacceptare

1

Puteți seta o valoare mai mare pentru a solicita mai multe evaluări reciproce.

Grupul de traducători

Utilizatori

Sau Translate cu control de acces pentru fiecare proiect.

Grupul de recenzenți

N/A

Nu se utilizează, toți traducătorii revizuiesc.

Recenzori dedicați

Nou în versiunea 2.18: Fluxul de lucru adecvat pentru revizuire este acceptat începând cu Weblate 2.18.

Cu recenzori dedicați aveți două grupuri de utilizatori, unul care poate trimite traduceri și altul care le poate revizui pentru a se asigura că traducerile sunt consecvente și de bună calitate.

  • Care utilizator poate edita traduceri neaprobate.

  • Revizorul poate aproba / dezaproba șirurile de caractere.

  • Revizorul poate edita toate traducerile (inclusiv cele aprobate).

  • Sugestiile pot fi, de asemenea, utilizate pentru a sugera modificări pentru șirurile de caractere aprobate.

Setarea

Valoare

Notă

Activați recenzii

pe

Configurat la nivel de proiect.

Activați sugestiile

oprit

Este util ca utilizatorii să poată sugera atunci când nu sunt siguri.

Votul prin sugestie

oprit

Sugestii de autoacceptare

0

Grupul de traducători

Utilizatori

Sau Translate cu control de acces pentru fiecare proiect.

Grupul de recenzenți

Revizorii

Sau Review cu control de acces pentru fiecare proiect.

Activarea recenziilor

Revizuirile pot fi activate în configurația proiectului, din subpagina Workflow din setările proiectului (care se găsește în meniul ManageSettings):

_images/project-workflow.png

Notă

În funcție de configurația Weblate, este posibil ca această setare să nu vă fie disponibilă. De exemplu, pe Hosted Weblate, acest lucru nu este disponibil pentru proiectele găzduite gratuit.

Poartă de calitate pentru șirurile sursă

În multe cazuri, șirurile originale din limba sursă provin de la dezvoltatori, deoarece aceștia scriu codul și furnizează șirurile inițiale. Cu toate acestea, deseori, dezvoltatorii nu sunt vorbitori nativi ai limbii sursă și nu asigură calitatea dorită a șirurilor sursă. Traducerea intermediară vă poate ajuta în rezolvarea acestui aspect - există o poartă suplimentară de calitate pentru șirurile de caractere între dezvoltatori și traducători și utilizatori.

Prin setarea Fișier de limbaj intermediar, acest fișier va fi folosit ca sursă pentru șiruri de caractere, dar va fi editat în limba sursă pentru a fi lustruit. Odată ce șirul de caractere este gata în limba sursă, acesta va fi disponibil și pentru traducători pentru a fi tradus în alte limbi.

digraph translations { graph [fontname = "sans-serif", fontsize=10]; node [fontname = "sans-serif", fontsize=10, margin=0.1, height=0, style=filled, fillcolor=white, shape=note]; edge [fontname = "sans-serif", fontsize=10]; subgraph cluster_dev { style=filled; color=lightgrey; label = "Development process"; "Developers" [shape=box, fillcolor="#144d3f", fontcolor=white]; "Developers" -> "Intermediate file"; } subgraph cluster_l10n { style=filled; color=lightgrey; label = "Localization process"; "Translators" [shape=box, fillcolor="#144d3f", fontcolor=white]; "Editors" [shape=box, fillcolor="#144d3f", fontcolor=white]; "Editors" -> "Monolingual base language file"; "Translators" -> "Translation language file"; } "Intermediate file" -> "Monolingual base language file" [constraint=false]; "Monolingual base language file" -> "Translation language file" [constraint=false]; }

Sursa șiruri de recenzii

Cu Activați revizuirile sursei activat, procesul de revizuire poate fi aplicat asupra șirurilor sursă. Odată activat, utilizatorii pot raporta probleme în șirurile sursă. Procesul efectiv depinde de faptul dacă se utilizează formate bilingve sau monolingve.

Pentru formatele monolingve, revizuirea șirului sursă se comportă în mod similar cu Recenzori dedicați - odată ce este raportată o problemă la nivelul șirului sursă, aceasta este marcată ca Necesită editare.

Formatele bilingve nu permit editarea directă a șirurilor de caractere sursă (acestea sunt de obicei extrase direct din codul sursă). În acest caz, eticheta Source needs review este atașată șirurilor de caractere raportate de traducători. Ar trebui să revizuiți astfel de șiruri și fie să le editați în sursă, fie să eliminați eticheta.

Î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 de 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 Împingeți pe 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.

# 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

# 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 atunci când creați o componentă de traducere. Îl puteți modifica în orice moment în administrare.

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.

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ă le 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.

De exemplu, în cazul fișierelor gettext PO, puteți actualiza fișierele de traducere utilizând instrumentul msgmerge:

msgmerge -U locale/cs/LC_MESSAGES/django.mo locale/django.pot

În cazul în care doriți să faceți actualizarea în mod automat, puteți instala addon Actualizarea fișierelor PO pentru a se potrivi cu POT (msgmerge).

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.

  • Î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 lingvistic 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.

Funcționalități

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, 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.

Formate de fișiere acceptate

Weblate acceptă cele mai multe formate de traducere înțelese de translate-toolkit, însă fiecare format fiind ușor diferit, pot apărea unele probleme cu formate care nu sunt bine testate.

Notă

Atunci când alegeți un format de fișier pentru aplicația voastră, este mai bine să folosiți un format bine stabilit în setul de instrumente/platforma pe care o utilizați. În acest fel, traducătorii voștri pot folosi în plus orice instrumente cu care sunt obișnuiți și vor contribui mai probabil la proiectul dumneavoastră.

Formate bilingve și monolingve

Sunt acceptate atât formatul monolingual, cât și bilingual. Formatele bilingve stochează două limbi într-un singur fișier-sursă și traducere (exemple tipice sunt GNU gettext, XLIFF sau Șiruri Apple iOS). Pe de altă parte, formatele monolingve identifică șirul de caractere prin ID, iar fiecare fișier de limbă conține doar maparea acestora într-o anumită limbă (tipic Resurse de șiruri Android). Unele formate de fișiere sunt utilizate în ambele variante, a se vedea descrierea detaliată de mai jos.

Pentru utilizarea corectă a fișierelor monolingve, Weblate are nevoie de acces la un fișier care să conțină lista completă a șirurilor de caractere care trebuie traduse împreună cu sursa lor - acest fișier se numește Fișier de limbă de bază monolingvă în Weblate, deși denumirea poate varia în paradigma dumneavoastră.

În plus, acest flux de lucru poate fi extins prin utilizarea Fișier de limbaj intermediar pentru a include șiruri de caractere furnizate de dezvoltatori, dar care să nu fie utilizate ca atare în șirurile finale.

Detecție automată

Weblate poate detecta automat mai multe formate de fișiere larg răspândite, dar această detectare poate afecta performanța și va limita caracteristicile specifice unui anumit format de fișier (de exemplu, adăugarea automată de noi traduceri).

Capabilități ale tipurilor de traducere

Capacități ale tuturor formatelor acceptate:

Formatul

Lingvistică 1

Pluralurile 2

Comentarii 3

Contextul 4

Locație 5

Indicatori 8

State suplimentare 6

GNU gettext

bilingv

da

da

da

da

da 9

are nevoie de editare

Gettext monolingv

mono

da

da

da

da

da 9

are nevoie de editare

XLIFF

ambele

da

da

da

da

da 10

necesită editare, aprobat

Proprietăți Java

ambele

nu

da

nu

nu

nu

mi18n lang fișiere

mono

nu

da

nu

nu

nu

Proprietăți GWT

mono

da

da

nu

nu

nu

Traduceri Joomla

mono

nu

da

nu

da

nu

Qt Linguist .ts

ambele

da

da

nu

da

da 10

are nevoie de editare

Resurse de șiruri Android

mono

da

da 7

nu

nu

da 10

Șiruri Apple iOS

bilingv

nu

da

nu

nu

nu

Șiruri PHP

mono

nu 11

da

nu

nu

nu

Fișiere JSON

mono

nu

nu

nu

nu

nu

Fișiere JSON i18next

mono

da

nu

nu

nu

nu

fișiere JSON go-i18n

mono

da

nu

nu

nu

nu

Fișier ARB

mono

da

da

nu

nu

nu

WebExtensiune JSON

mono

da

da

nu

nu

nu

Fișiere de resurse .XML

mono

nu

da

nu

nu

da 10

Fișiere CSV

ambele

nu

da

da

da

nu

are nevoie de editare

Fișiere YAML

mono

nu

da

nu

nu

nu

Fișiere Ruby YAML

mono

da

da

nu

nu

nu

Fișiere DTD

mono

nu

nu

nu

nu

nu

Fișiere XML plane

mono

nu

nu

nu

nu

da 10

Fișiere Windows RC

mono

nu

da

nu

nu

nu

Excel Deschidere XML

mono

nu

da

da

da

nu

are nevoie de editare

Fișiere de metadate ale magazinului de aplicații

mono

nu

nu

nu

nu

nu

Fișiere de subtitrare

mono

nu

nu

nu

da

nu

Fișiere HTML

mono

nu

nu

nu

nu

nu

Formatul OpenDocument

mono

nu

nu

nu

nu

nu

Formatul IDML

mono

nu

nu

nu

nu

nu

Traduceri INI

mono

nu

nu

nu

nu

nu

Traduceri Inno Setup INI

mono

nu

nu

nu

nu

nu

Formatul TermBase eXchange

bilingv

nu

da

nu

nu

da 10

Fișiere text

mono

nu

nu

nu

nu

nu

Formatul Stringsdict

mono

da

da

nu

nu

nu

Format fluent

mono

nu 12

da

nu

nu

nu

1

A se vedea Formate bilingve și monolingve

2

Pluralul este necesar pentru a localiza corect șirurile de caractere cu număr variabil.

3

Comentariile pot fi utilizate pentru a transmite informații suplimentare despre șirul de tradus.

4

Contextul este utilizat pentru a diferenția șiruri de caractere identice utilizate în domenii de aplicare diferite (de exemplu, Sun poate fi utilizat ca un nume prescurtat al zilei „duminică” sau ca numele celei mai apropiate stele de noi).

5

Localizarea unui șir de caractere în codul sursă ar putea ajuta traducătorii pricepuți să își dea seama cum este utilizat acel șir.

6

Stări suplimentare acceptate de formatul de fișier în plus față de „Netradus” și „Tradus”.

7

Comentariu XML plasat înaintea elementului <string>, analizat ca un comentariu de dezvoltator.

8

Vezi Personalizarea comportamentului cu ajutorul stegulețelor

9(1,2)

Comentariile de tip gettext sunt utilizate ca indicatori.

10(1,2,3,4,5,6)

Indicatorii sunt extrași din atributul non-standard weblate-flags pentru toate formatele bazate pe XML. În plus, max-length:N este suportat prin atributul maxwidth <http://docs.oasis-open.org/xliff/v1.2/os/xliff-core.html#maxwidth>`_ așa cum este definit în standardul XLIFF, a se vedea Specificarea indicatoarelor de traducere.

11

Pluralurile sunt acceptate doar pentru Laravel, care folosește sintaxa in string pentru a le defini, vezi Localizarea în Laravel.

12

Pluralurile sunt tratate în sintaxa șirurilor de caractere și nu sunt expuse ca pluraluri în Weblate.

Read-only strings

Nou în versiunea 3.10.

Șirurile de caractere numai pentru citire din fișierele de traducere vor fi incluse, dar nu pot fi editate în Weblate. Această caracteristică este susținută nativ de câteva formate (XLIFF și Resurse de șiruri Android), dar poate fi emulată în altele prin adăugarea unui indicator read-only, a se vedea Personalizarea comportamentului cu ajutorul stegulețelor.

GNU gettext

Cel mai utilizat format pentru traducerea de software liber.

Informațiile contextuale stocate în fișier sunt susținute prin ajustarea antetelor sale sau prin crearea de legături către fișierele sursă corespunzătoare.

Fișierul bilingv gettext PO arată de obicei astfel:

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "Monday"
msgstr "Pondělí"

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "Tuesday"
msgstr "Úterý"

#: weblate/accounts/avatar.py:163
msgctxt "No known user"
msgid "None"
msgstr "Žádný"

Tipic Weblate Configurația componentei

Masca de fișier

po/*.po

Fișier de limbă de bază monolingvă

Gol

Șablon pentru traduceri noi

po/messages.pot

Formatul fișierului

Gettext PO fișier

Gettext monolingv

Unele proiecte decid să utilizeze gettext ca formate monolingve - acestea codifică doar ID-urile în codul sursă, iar șirul trebuie apoi tradus în toate limbile, inclusiv în engleză. Acest lucru este acceptat, deși trebuie să alegeți acest format de fișier în mod explicit atunci când importați componente în Weblate.

Fișierul monolingv gettext PO arată de obicei astfel:

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-monday"
msgstr "Pondělí"

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-tuesday"
msgstr "Úterý"

#: weblate/accounts/avatar.py:163
msgid "none-user"
msgstr "Žádný"

În timp ce fișierul limbii de bază va fi:

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-monday"
msgstr "Monday"

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-tuesday"
msgstr "Tuesday"

#: weblate/accounts/avatar.py:163
msgid "none-user"
msgstr "None"

Tipic Weblate Configurația componentei

Masca de fișier

po/*.po

Fișier de limbă de bază monolingvă

po/en.po

Șablon pentru traduceri noi

po/messages.pot

Formatul fișierului

Gettext PO file (monolingv)

XLIFF

Format bazat pe XML creat pentru a standardiza fișierele de traducere, dar în cele din urmă este unul dintre multele standarde, în acest domeniu.

XML Localization Interchange File Format (XLIFF) este de obicei folosit ca bilingv, dar Weblate îl acceptă și ca monolingv.

Vezi și

Specificația XML Localization Interchange File Format (XLIFF)

Statele de traducere

Schimbat în versiunea 3.3: Weblate a ignorat atributul state înainte de versiunea 3.3.

Atributul state din fișier este parțial procesat și mapat la starea „Needs edit” din Weblate (următoarele stări sunt folosite pentru a marca șirul ca necesitând editare dacă există o țintă prezentă: new, needs-translation, needs-adaptation, needs-l10n). În cazul în care atributul state lipsește, un șir este considerat tradus de îndată ce există un element <target>.

Dacă șirul de traducere are approved="yes", acesta va fi, de asemenea, importat în Weblate ca „Approved”, orice altceva va fi importat ca „Waiting for review” (care corespunde specificației XLIFF).

În timpul salvării, Weblate nu adaugă aceste atribute decât dacă este necesar:

  • Atributul state este adăugat numai în cazul în care șirul este marcat ca necesitând editare.

  • Atributul approved se adaugă numai în cazul în care șirul a fost revizuit.

  • În alte cazuri, atributele nu sunt adăugate, dar sunt actualizate în cazul în care sunt prezente.

Aceasta înseamnă că, atunci când se utilizează formatul XLIFF, se recomandă cu tărie activarea procesului de revizuire Weblate, pentru a vedea și modifica starea aprobată a șirurilor de caractere.

În mod similar, atunci când importați astfel de fișiere (în formularul de încărcare), trebuie să alegeți Import as translated sub Procesarea șirurilor de caractere care necesită editare.

Spațiu alb și linii noi în XLIFF

În general, în formatele XML nu se fac diferențe între tipurile sau cantitățile de spații albe. Dacă doriți să îl păstrați, trebuie să adăugați steagul xml:space="preserve" la șirul de caractere.

De exemplu:

    <trans-unit id="10" approved="yes">
        <source xml:space="preserve">hello</source>
        <target xml:space="preserve">Hello, world!
</target>
    </trans-unit>

Specificarea indicatoarelor de traducere

Puteți specifica indicatori de traducere suplimentari (a se vedea Personalizarea comportamentului cu ajutorul stegulețelor) utilizând atributul weblate-flags. Weblate înțelege, de asemenea, atributele maxwidth și font din specificația XLIFF:

<trans-unit id="10" maxwidth="100" size-unit="pixel" font="ubuntu;22;bold">
   <source>Hello %s</source>
</trans-unit>
<trans-unit id="20" maxwidth="100" size-unit="char" weblate-flags="c-format">
   <source>Hello %s</source>
</trans-unit>

Atributul font este analizat pentru familia, dimensiunea și greutatea fontului, exemplul de mai sus arată toate acestea, deși este necesară doar familia fontului. Orice spațiu în alb din familia de fonturi este convertit în caractere de subliniere, astfel încât Source Sans Pro devine Source_Sans_Pro, vă rugăm să țineți cont de acest lucru atunci când numiți grupul de fonturi (a se vedea Gestionarea fonturilor).

Chei de șiruri

Weblate identifică unitățile din fișierul XLIFF prin atributul resname în cazul în care acesta este prezent și revine la id (împreună cu tag-ul file`, dacă este prezent).

Atributul resname ar trebui să fie un identificator prietenos pentru oameni al unității, ceea ce îl face mai potrivit pentru afișarea în Weblate în loc de id. Numele „Resname” trebuie să fie unic în întregul fișier XLIFF. Acest lucru este cerut de Weblate și nu este reglementat de standardul XLIFF - acesta nu impune nicio restricție de unicitate pentru acest atribut.

Tipic Weblate Configurația componentei pentru XLIFF bilingv

Masca de fișier

localizări/*.xliff

Fișier de limbă de bază monolingvă

Gol

Șablon pentru traduceri noi

localizări/en-US.xliff

Formatul fișierului

XLIFF Fișier de traducere

Tipic Weblate Configurația componentei pentru XLIFF monolingv

Masca de fișier

localizări/*.xliff

Fișier de limbă de bază monolingvă

localizări/en-US.xliff

Șablon pentru traduceri noi

localizări/en-US.xliff

Formatul fișierului

XLIFF Fișier de traducere

Proprietăți Java

Format nativ Java pentru traduceri.

Proprietățile Java sunt utilizate de obicei ca traduceri monolingve.

Weblate acceptă variantele ISO-8859-1, UTF-8 și UTF-16 ale acestui format. Toate acestea acceptă stocarea tuturor caracterelor Unicode, doar că sunt codificate diferit. În ISO-8859-1, se folosesc secvențele de scăpare Unicode (de exemplu zkou\u0161ka), toate celelalte codifică caracterele direct, fie în UTF-8, fie în UTF-16.

Notă

Încărcarea secvențelor de scăpare funcționează și în modul UTF-8, așa că vă rugăm să aveți grijă să alegeți setul de codificare corect pentru a corespunde nevoilor aplicației dumneavoastră.

Tipic Weblate Configurația componentei

Masca de fișier

src/app/Bundle_*.proprietăți

Fișier de limbă de bază monolingvă

src/app/Bundle.proprietăți

Șablon pentru traduceri noi

Gol

Formatul fișierului

Proprietăți Java (ISO-8859-1)`

mi18n lang fișiere

Nou în versiunea 4.7.

Format de fișier utilizat pentru localizarea JavaScript de către mi18n. Sintactic, se potrivește cu Proprietăți Java.

Tipic Weblate Configurația componentei

Masca de fișier

*.lang

Fișier de limbă de bază monolingvă

en-US.lang

Șablon pentru traduceri noi

Gol

Formatul fișierului

mi18n fișier lang

Proprietăți GWT

Format nativ GWT pentru traduceri.

Proprietățile GWT sunt utilizate de obicei ca traduceri monolingve.

Tipic Weblate Configurația componentei

Masca de fișier

src/app/Bundle_*.proprietăți

Fișier de limbă de bază monolingvă

src/app/Bundle.proprietăți

Șablon pentru traduceri noi

Gol

Formatul fișierului

GWT Proprietăți

Traduceri INI

Nou în versiunea 4.1.

Formatul fișierului INI pentru traduceri.

Traducerile INI sunt utilizate de obicei ca traduceri monolingve.

Tipic Weblate Configurația componentei

Masca de fișier

limbă/*.ini

Fișier de limbă de bază monolingvă

limbă/en.ini

Șablon pentru traduceri noi

Gol

Formatul fișierului

FIșier INI

Notă

Weblate extrage cheile numai din secțiunile dintr-un fișier INI. În cazul în care fișierul INI nu are secțiuni, este posibil să doriți să utilizați în schimb Traduceri Joomla sau Proprietăți Java.

Traduceri Inno Setup INI

Nou în versiunea 4.1.

Formatul de fișier Inno Setup INI pentru traduceri.

Traducerile Inno Setup INI sunt utilizate de obicei ca traduceri monolingve.

Notă

Singura diferență notabilă față de Traduceri INI este aceea că suportă caracterele de substituție %n și %t` pentru pauză de linie și tabulare.

Tipic Weblate Configurația componentei

Masca de fișier

limbă/*.islu

Fișier de limbă de bază monolingvă

limbă/en.islu

Șablon pentru traduceri noi

Gol

Formatul fișierului

Inno Setup INI Fișier

Notă

Doar fișierele Unicode (.islu) sunt acceptate în prezent, varianta ANSI (.isl) nu este acceptată în prezent.

Traduceri Joomla

Nou în versiunea 2.12.

Format nativ Joomla pentru traduceri.

Traducerile Joomla sunt de obicei folosite ca traduceri monolingve.

Tipic Weblate Configurația componentei

Masca de fișier

limbă/*/com_foobar.ini

Fișier de limbă de bază monolingvă

limbă/en-GB/com_foobar.ini

Șablon pentru traduceri noi

Gol

Formatul fișierului

Fișier de limbă Joomla

Qt Linguist .ts

Format de traducere utilizat în aplicațiile bazate pe Qt.

Fișierele Qt Linguist sunt utilizate atât ca traduceri bilingve, cât și monolingve.

Tipic Weblate Configurația componentei atunci când se utilizează ca bilingv

Masca de fișier

i18n/app.*.ts

Fișier de limbă de bază monolingvă

Gol

Șablon pentru traduceri noi

i18n/app.de.ts

Formatul fișierului

Qt Linguist Traducere fișier

Tipic Weblate Configurația componentei atunci când se utilizează ca monolingv

Masca de fișier

i18n/app.*.ts

Fișier de limbă de bază monolingvă

i18n/app.en.ts

Șablon pentru traduceri noi

i18n/app.en.ts

Formatul fișierului

Qt Linguist Traducere fișier

Resurse de șiruri Android

Format de fișier specific Android pentru traducerea aplicațiilor.

Resursele de șiruri de caractere Android sunt monolingve, Fișier de limbă de bază monolingvă este stocat într-o locație diferită de celelalte res/values/strings.xml.

Tipic Weblate Configurația componentei

Masca de fișier

res/values-*/strings.xml

Fișier de limbă de bază monolingvă

res/values/strings.xml

Șablon pentru traduceri noi

Gol

Formatul fișierului

Resurse de șiruri Android

Notă

Structurile Android string-array nu sunt acceptate în prezent. Pentru a rezolva această problemă, puteți despărți array-urile de șiruri de caractere:

<string-array name="several_strings">
    <item>First string</item>
    <item>Second string</item>
</string-array>

devin:

<string-array name="several_strings">
    <item>@string/several_strings_0</item>
    <item>@string/several_strings_1</item>
</string-array>
<string name="several_strings_0">First string</string>
<string name="several_strings_1">Second string</string>

Rețeaua string-array care indică elementele string ar trebui să fie stocată într-un alt fișier și să nu fie disponibilă pentru traducere.

Acest script poate ajuta la pre-procesarea fișierelor strings.xml și a traducerilor existente: https://gist.github.com/paour/11291062

Șiruri Apple iOS

Format de fișier specific Apple pentru traducerea aplicațiilor, utilizat atât pentru iOS, cât și pentru traducerile aplicațiilor iPhone <pereche: iPhone; traducere>`/iPad.

Șirurile de caractere Apple iOS sunt utilizate de obicei ca traduceri bilingve.

Tipic Weblate Configurația componentei

Masca de fișier

Resurse/*.lproj/Localizable.strings

Fișier de limbă de bază monolingvă

Resurse/en.lproj/Localizable.strings sau Resurse/Base.lproj/Localizable.strings

Șablon pentru traduceri noi

Gol

Formatul fișierului

Șiruri de caractere pentru iOS (UTF-8)

Șiruri PHP

Traducerile PHP sunt, de obicei, monolingve, așa că se recomandă să specificați un fișier de bază cu (ceea ce este cel mai adesea) șiruri de caractere în limba engleză.

Exemplu de fișier:

<?php
$LANG['foo'] = 'bar';
$LANG['foo1'] = 'foo bar';
$LANG['foo2'] = 'foo bar baz';
$LANG['foo3'] = 'foo bar baz bag';

Tipic Weblate Configurația componentei

Masca de fișier

lang/*/texts.php

Fișier de limbă de bază monolingvă

lang/en/texts.php

Șablon pentru traduceri noi

lang/en/texts.php

Formatul fișierului

PHP șiruri de caractere

Laravel PHP șiruri de caractere

Schimbat în versiunea 4.1.

Fișierele de localizare Laravel PHP sunt acceptate și cu plural:

<?php
return [
    'welcome' => 'Welcome to our application',
    'apples' => 'There is one apple|There are many apples',
];

Fișiere JSON

Nou în versiunea 2.0.

Schimbat în versiunea 2.16: Începând cu Weblate 2.16 și cu translate-toolkit cel puțin 2.2.4, sunt acceptate și fișierele JSON cu structuri imbricate.

Schimbat în versiunea 4.3: Structura fișierului JSON este păstrată în mod corespunzător chiar și în cazul situațiilor complexe, care erau afectate în versiunile anterioare.

Formatul JSON este utilizat în principal pentru traducerea aplicațiilor implementate în JavaScript.

Weblate acceptă în prezent mai multe variante de traduceri JSON:

Traducerile JSON sunt, de obicei, monolingve, astfel încât se recomandă să specificați un fișier de bază cu (ceea ce este cel mai adesea) șiruri de caractere în limba engleză.

Exemplu de fișier:

{
  "Hello, world!\n": "Ahoj světe!\n",
  "Orangutan has %d banana.\n": "",
  "Try Weblate at https://demo.weblate.org/!\n": "",
  "Thank you for using Weblate.": ""
}

Fișierele imbricate sunt, de asemenea, acceptate (a se vedea mai sus pentru cerințe), un astfel de fișier poate arăta ca:

{
  "weblate": {
    "hello": "Ahoj světe!\n",
    "orangutan": "",
    "try": "",
    "thanks": ""
  }
}

Sugestie

JSON file și JSON nested structure file pot gestiona același tip de fișiere. Ambele păstrează structura JSON existentă în timpul traducerii.

Singura diferență între ele este atunci când se adaugă șiruri noi folosind Weblate. Formatul structurii imbricate analizează cheia nou adăugată și introduce noul șir în structura corespunzătoare. De exemplu, cheia app.name este inserată ca:

{
   "app": {
      "name": "Weblate"
   }
}

Tipic Weblate Configurația componentei

Masca de fișier

langs/translation-*.json

Fișier de limbă de bază monolingvă

langs/translation-en.json

Șablon pentru traduceri noi

Gol

Formatul fișierului

Fisier cu structură imbricata JSON

Fișiere JSON i18next

Schimbat în versiunea 2.17: Începând cu Weblate 2.17 și cu translate-toolkit cel puțin 2.2.5, sunt acceptate și fișierele JSON i18next cu plural.

i18next este un cadru de internaționalizare scris în și pentru JavaScript. Weblate sprijină fișierele sale de localizare cu caracteristici precum pluralul.

Traducerile i18next sunt monolingve, așa că este recomandat să specificați un fișier de bază cu (ceea ce este cel mai adesea) șiruri de caractere în limba engleză.

Notă

Weblate acceptă formatul i18next JSON v3. Variantele v2 și v1 sunt în mare parte compatibile, cu excepția modului în care sunt tratate pluralurile.

Exemplu de fișier:

{
  "hello": "Hello",
  "apple": "I have an apple",
  "apple_plural": "I have {{count}} apples",
  "apple_negative": "I have no apples"
}

Tipic Weblate Configurația componentei

Masca de fișier

langs/*.json

Fișier de limbă de bază monolingvă

langs/en.json

Șablon pentru traduceri noi

Gol

Formatul fișierului

i18next fișier JSON

fișiere JSON go-i18n

Nou în versiunea 4.1.

Traducerile go-i18n sunt monolingve, așa că este recomandat să specificați un fișier de bază cu (ceea ce este cel mai adesea) șiruri de caractere în limba engleză.

Notă

Weblate acceptă formatul go-i18n JSON v1, pentru formate JSON plate vă rugăm să utilizați Fișiere JSON. Formatul v2 cu hash nu este acceptat în prezent.

Tipic Weblate Configurația componentei

Masca de fișier

langs/*.json

Fișier de limbă de bază monolingvă

langs/en.json

Șablon pentru traduceri noi

Gol

Formatul fișierului

go-i18n JSON fișier

Fișier ARB

Nou în versiunea 4.1.

Traducerile ARB sunt monolingve, astfel încât se recomandă să specificați un fișier de bază cu (ceea ce este cel mai adesea) șiruri de caractere în limba engleză.

Tipic Weblate Configurația componentei

Masca de fișier

lib/l10n/intl_*.arb

Fișier de limbă de bază monolingvă

lib/l10n/intl_en.arb

Șablon pentru traduceri noi

Gol

Formatul fișierului

ARB fișier

WebExtensiune JSON

Nou în versiunea 2.16: Acest lucru este acceptat începând cu Weblate 2.16 și cu translate-toolkit cel puțin 2.2.4.

Format de fișier utilizat la traducerea extensiilor pentru Mozilla Firefox sau Google Chromium.

Notă

Deși acest format se numește JSON, specificația sa permite includerea de comentarii, care nu fac parte din specificația JSON. În prezent, Weblate nu acceptă fișiere cu comentarii.

Exemplu de fișier:

{
  "hello": {
    "message": "Ahoj světe!\n",
    "description": "Description",
    "placeholders": {
      "url": {
        "content": "$1",
        "example": "https://developer.mozilla.org"
      }
    }
  },
  "orangutan": {
    "message": "",
    "description": "Description"
  },
  "try": {
    "message": "",
    "description": "Description"
  },
  "thanks": {
    "message": "",
    "description": "Description"
  }
}

Tipic Weblate Configurația componentei

Masca de fișier

_locale/*/messages.json

Fișier de limbă de bază monolingvă

_locale/en/messages.json

Șablon pentru traduceri noi

Gol

Formatul fișierului

Fișier JSON al extensiei web

Fișiere de resurse .XML

Nou în versiunea 2.3.

Un fișier resursă .XML (.resx) utilizează un format de fișier XML monolingv utilizat în aplicațiile Microsoft .NET. Este interschimbabil cu .resw, atunci când folosește o sintaxă identică cu cea a fișierului .resx.

Tipic Weblate Configurația componentei

Masca de fișier

Resurse/Limbă.*.resx

Fișier de limbă de bază monolingvă

Resurse/Limbă.*.resx

Șablon pentru traduceri noi

Gol

Formatul fișierului

fișier de resurse .NET

Fișiere CSV

Nou în versiunea 2.4.

Fișierele CSV pot conține o simplă listă de surse și traduceri. Weblate acceptă următoarele fișiere:

  • Fișiere cu câmpuri care definesc antetul (location, source, target, ID, fuzzy, context, translator_comments, developer_comments). Aceasta este abordarea recomandată, deoarece este cea mai puțin predispusă la erori. Alegeți FileCSV ca format de fișier.

  • Fișiere cu două câmpuri - sursă și traducere (în această ordine). Alegeți Simple CSV file ca format de fișier.

  • Fișiere fără antet cu câmpuri în ordinea definită de translate-toolkit: location, source, target, ID, fuzzy, context, translator_comments, developer_comments. Alegeți ca format de fișier CSV file.

  • Nu uitați să definiți Fișier de limbă de bază monolingvă atunci când fișierele dumneavoastră sunt monolingve (a se vedea Formate bilingve și monolingve).

Atenționare

În prezent, formatul CSV detectează automat dialectul fișierului CSV. În unele cazuri, este posibil ca detectarea automată să nu reușească și să obțineți rezultate mixte. Acest lucru este valabil în special pentru fișierele CSV cu linii noi în valori. Ca soluție de rezolvare, se recomandă să omiteți caracterele de ghilimele.

Exemplu de fișier:

Thank you for using Weblate.,Děkujeme za použití Weblate.

Tipic Weblate Configurația componentei pentru CSV bilingv

Masca de fișier

locale/*.csv

Fișier de limbă de bază monolingvă

Gol

Șablon pentru traduceri noi

locale/en.csv

Formatul fișierului

File CSV

Tipic Weblate Configurația componentei pentru CSV monolingv

Masca de fișier

locale/*.csv

Fișier de limbă de bază monolingvă

locale/en.csv

Șablon pentru traduceri noi

locale/en.csv

Formatul fișierului

File CSV simplu

Vezi și

formate/csv

Fișiere YAML

Nou în versiunea 2.9.

Fișierele YAML simple cu chei și valori de tip șir de caractere. Weblate extrage, de asemenea, șiruri de caractere din liste sau dicționare.

Exemplu de fișier YAML:

weblate:
  hello: ""
  orangutan": ""
  try": ""
  thanks": ""

Tipic Weblate Configurația componentei

Masca de fișier

traduceri/messages.*.yml

Fișier de limbă de bază monolingvă

traduceri/messages.en.yml

Șablon pentru traduceri noi

Gol

Formatul fișierului

fișier YAML

Vezi și

formate/yaml, Fișiere Ruby YAML

Fișiere Ruby YAML

Nou în versiunea 2.9.

Fișiere Ruby i18n YAML cu limba ca nod rădăcină.

Exemplu de fișier Ruby i18n YAML:

cs:
  weblate:
    hello: ""
    orangutan: ""
    try: ""
    thanks: ""

Tipic Weblate Configurația componentei

Masca de fișier

traduceri/messages.*.yml

Fișier de limbă de bază monolingvă

traduceri/messages.en.yml

Șablon pentru traduceri noi

Gol

Formatul fișierului

`Ruby YAML fișier `

Vezi și

formate/yaml, Fișiere YAML

Fișiere DTD

Nou în versiunea 2.18.

Exemplu de fișier DTD:

<!ENTITY hello "">
<!ENTITY orangutan "">
<!ENTITY try "">
<!ENTITY thanks "">

Tipic Weblate Configurația componentei

Masca de fișier

locale/*.dtd

Fișier de limbă de bază monolingvă

locale/en.dtd

Șablon pentru traduceri noi

Gol

Formatul fișierului

DTD fișier

Vezi și

formate/dtd

Fișiere XML plane

Nou în versiunea 3.9.

Exemplu de fișier XML plat:

<?xml version='1.0' encoding='UTF-8'?>
<root>
  <str key="hello_world">Hello World!</str>
  <str key="resource_key">Translated value.</str>
</root>

Tipic Weblate Configurația componentei

Masca de fișier

locale/*.xml

Fișier de limbă de bază monolingvă

locale/en.xml

Șablon pentru traduceri noi

Gol

Formatul fișierului

Fișier XML plat

Vezi și

formate/flatxml

Fișiere Windows RC

Schimbat în versiunea 4.1: Suportul pentru fișierele Windows RC a fost rescris.

Notă

Suportul pentru acest format este în prezent în stadiul beta, feedback-ul de la testare este binevenit.

Exemplu de fișier Windows RC:

LANGUAGE LANG_CZECH, SUBLANG_DEFAULT

STRINGTABLE
BEGIN
    IDS_MSG1                "Hello, world!\n"
    IDS_MSG2                "Orangutan has %d banana.\n"
    IDS_MSG3                "Try Weblate at http://demo.weblate.org/!\n"
    IDS_MSG4                "Thank you for using Weblate."
END

Tipic Weblate Configurația componentei

Masca de fișier

lang/*.rc

Fișier de limbă de bază monolingvă

lang/en-US.rc

Șablon pentru traduceri noi

lang/en-US.rc

Formatul fișierului

RC fișier

Vezi și

Windows RC files

Fișiere de metadate ale magazinului de aplicații

Nou în versiunea 3.5.

Metadatele utilizate pentru publicarea aplicațiilor în diverse magazine de aplicații pot fi traduse. În prezent, următoarele instrumente sunt compatibile:

Metadatele constau din mai multe fișiere text, pe care Weblate le va prezenta ca șiruri separate pentru traducere.

Tipic Weblate Configurația componentei

Masca de fișier

fastlane/android/metadata/*`

Fișier de limbă de bază monolingvă

fastlane/android/metadata/en-US

Șablon pentru traduceri noi

fastlane/android/metadata/en-US

Formatul fișierului

Filele de metadate ale magazinului de aplicații

Sugestie

În cazul în care nu doriți să traduceți anumite șiruri de caractere (de exemplu, changelogs), marcați-le ca fiind doar pentru citire (a se vedea Personalizarea comportamentului cu ajutorul stegulețelor). Acest lucru poate fi automatizat de către Editare în masă.

Fișiere de subtitrare

Nou în versiunea 3.7.

Weblate poate traduce diverse fișiere de subtitrare:

  • Fișier subtitrat SubRip (*.srt)

  • Fișier de subtitrare MicroDVD (*.sub)

  • Fișier de subtitrări Advanced Substation Alpha (*.ass)

  • Fișier de subtitrare Substation Alpha (*.ssa)

Tipic Weblate Configurația componentei

Masca de fișier

path/*.srt

Fișier de limbă de bază monolingvă

path/en.srt

Șablon pentru traduceri noi

path/en.srt

Formatul fișierului

SubRip fișier de subtitrare

Vezi și

formate/subtitluri

Excel Deschidere XML

Nou în versiunea 3.2.

Fișierele Excel Open XML (.xlsx) pot fi importate și exportate.

Atunci când încărcați fișiere XLSX pentru traducere, rețineți că este luată în considerare doar foaia de lucru activă și că trebuie să existe cel puțin o coloană numită source (care conține șirul sursă) și o coloană numită target (care conține traducerea). În plus, trebuie să existe coloana numită context (care conține calea de context a șirului de traducere). Dacă folosiți descărcarea XLSX pentru a exporta traducerile într-un registru de lucru Excel, obțineți deja un fișier cu formatul de fișier corect.

Fișiere HTML

Nou în versiunea 4.1.

Notă

Suportul pentru acest format este în prezent în stadiul beta, feedback-ul de la testare este binevenit.

Conținutul traductibil este extras din fișierele HTML și oferit pentru traducere.

Vezi și

formate/html

Fișiere text

Nou în versiunea 4.6.

Notă

Suportul pentru acest format este în prezent în stadiul beta, feedback-ul de la testare este binevenit.

Conținutul care poate fi tradus este extras din fișierele de text simplu și oferit pentru traducere. Fiecare paragraf este tradus ca un șir de caractere separat.

Există trei variante ale acestui format:

  • Fișier text simplu

  • Fișier text DokuWiki

  • Fișier text MediaWiki

Vezi și

formate/text

Formatul OpenDocument

Nou în versiunea 4.1.

Notă

Suportul pentru acest format este în prezent în stadiul beta, feedback-ul de la testare este binevenit.

Conținutul traductibil este extras din fișierele OpenDocument și oferit pentru traducere.

Vezi și

formate/odf

Formatul IDML

Nou în versiunea 4.1.

Notă

Suportul pentru acest format este în prezent în stadiul beta, feedback-ul de la testare este binevenit.

Conținutul traductibil este extras din fișierele Adobe InDesign Markup Language și oferit pentru traducere.

Formatul TermBase eXchange

Nou în versiunea 4.5.

TBX este un format XML pentru schimbul de date terminologice.

Tipic Weblate Configurația componentei

Masca de fișier

tbx/*.tbx

Fișier de limbă de bază monolingvă

Gol

Șablon pentru traduceri noi

Gol

Formatul fișierului

TermBase eXchange fișier

Formatul Stringsdict

Nou în versiunea 4.8.

Notă

Suportul pentru acest format este în prezent în stadiul beta, feedback-ul de la testare este binevenit.

Format bazat pe XML utilizat de Apple, care poate stoca mai multe forme ale unui șir de caractere.

Tipic Weblate Configurația componentei

Masca de fișier

Resurse/*.lproj/Localizable.stringsdict

Fișier de limbă de bază monolingvă

Resurse/en.lproj/Localizable.stringsdict sau Resurse/Base.lproj/Localizable.stringsdict

Șablon pentru traduceri noi

Gol

Formatul fișierului

Stringsdict fișier

Format fluent

Nou în versiunea 4.8.

Notă

Suportul pentru acest format este în prezent în stadiul beta, feedback-ul de la testare este binevenit.

Fluent este un format de text monolingv care se concentrează pe localizarea asimetrică: un simplu șir de caractere într-o limbă poate fi asociat cu o traducere complexă cu mai multe variante în altă limbă.

Tipic Weblate Configurația componentei

Masca de fișier

locale/*/messages.ftl

Fișier de limbă de bază monolingvă

locale/en/messages.ftl

Șablon pentru traduceri noi

Gol

Formatul fișierului

Fișier fluent`

Sprijinirea altor formate

Majoritatea formatelor acceptate de translate-toolkit care acceptă serializarea pot fi acceptate cu ușurință, dar nu au fost (încă) testate. În cele mai multe cazuri este nevoie de un strat subțire în Weblate pentru a ascunde diferențele de comportament ale diferitelor stocări translate-toolkit.

Pentru a adăuga suport pentru un nou format, abordarea preferată este de a implementa mai întâi suportul pentru acesta în translate-toolkit.

Integrarea controlului versiunilor

Weblate suportă în prezent Git (cu suport extins pentru GitHub, Gerrit și Subversiune) și Mercurial ca back-end-uri de control al versiunilor.

Accesarea depozitelor

Depozitul VCS pe care doriți să îl utilizați trebuie să fie accesibil pentru Weblate. În cazul unui depozit public, trebuie doar să introduceți URL-ul corect (de exemplu https://github.com/WeblateOrg/weblate.git), dar pentru depozitele private sau pentru URL-urile push, configurarea este mai complexă și necesită autentificare.

Accesarea depozitelor din Weblate găzduit

Pentru Hosted Weblate există un utilizator push dedicat înregistrat pe GitHub, Bitbucket, Codeberg și GitLab (cu numele de utilizator weblate, e-mail hosted@weblate.org și, numit Weblate push user). Trebuie să adăugați acest utilizator ca și colaborator și să-i acordați permisiunea corespunzătoare pentru depozitul dumneavoastră (read-only este în regulă pentru clonare, write este necesar pentru push). În funcție de setările serviciului și ale organizației dumneavoastră, acest lucru se întâmplă imediat sau necesită confirmare din partea Weblate.

Utilizatorul weblate de pe GitHub acceptă invitații în mod automat în cinci minute. Este posibil să fie necesară o procesare manuală pe celelalte servicii, așa că vă rugăm să aveți răbdare.

Odată ce utilizatorul weblate este adăugat, puteți configura Depozitul de cod sursă și URL de împingere a depozitului folosind protocolul SSH (de exemplu git@github.com:WeblateOrg/weblate.git).

Depozite SSH

Cea mai frecvent utilizată metodă de accesare a depozitelor private se bazează pe SSH. Autorizați cheia SSH publică Weblate (a se vedea Cheie SSH Weblate) pentru a accesa în acest mod depozitul upstream.

Atenționare

Pe GitHub, fiecare cheie poate fi folosită doar o singură dată, vezi Depozite GitHub și Accesarea depozitelor din Weblate găzduit.

Weblate stochează, de asemenea, amprenta digitală a cheii gazdă la prima conectare și nu reușește să se conecteze la gazdă în cazul în care aceasta este modificată ulterior (a se vedea Verificarea cheilor gazdă SSH).

În cazul în care este necesară o ajustare, faceți acest lucru din interfața de administrare Weblate:

_images/ssh-keys.png
Cheie SSH Weblate

Cheia publică Weblate este vizibilă pentru toți utilizatorii care navighează pe pagina About.

Administratorii pot genera sau afișa cheia publică utilizată în prezent de Weblate în conexiune (din SSH keys) pe pagina de destinație a interfeței de administrare.

Notă

Cheia SSH privată corespunzătoare nu poate avea în prezent o parolă, așa că asigurați-vă că aceasta este bine protejată.

Sugestie

Efectuați o copie de rezervă a cheii SSH Weblate private generate.

Verificarea cheilor gazdă SSH

Weblate stochează automat cheile gazdă SSH la prima accesare și le reține pentru utilizare ulterioară.

În cazul în care doriți să verificați amprenta cheii înainte de a vă conecta la depozit, adăugați cheile gazdă SSH ale serverelor pe care le veți accesa în Adaugă cheie gazdă, din aceeași secțiune a interfeței de administrare. Introduceți numele gazdei pe care urmează să o accesați (de exemplu, gitlab.com) și apăsați Submit. Verificați dacă amprenta sa se potrivește cu cea a serverului pe care l-ați adăugat.

Cheile adăugate cu amprentele digitale sunt afișate în mesajul de confirmare:

_images/ssh-keys-added.png

Depozite GitHub

Accesul prin SSH este posibil (a se vedea Depozite SSH), dar în cazul în care aveți nevoie să accesați mai mult de un depozit, vă veți lovi de o limitare GitHub privind utilizarea permisă a cheilor SSH (deoarece fiecare cheie poate fi utilizată o singură dată).

În cazul în care Împingeți ramura nu este setat, proiectul este bifurcat și modificările sunt împinse prin intermediul unei bifurcații. În cazul în care este setat, modificările sunt împinse în depozitul din upstream și în branșa aleasă.

Pentru implementări mai mici, utilizați autentificarea HTTPS cu un token de acces personal și contul dumneavoastră GitHub, consultați Crearea unui token de acces pentru utilizarea în linia de comandă.

Pentru configurații mai mari, este de obicei mai bine să creați un utilizator dedicat pentru Weblate, să-i atribuiți cheia SSH publică generată în Weblate (vezi Cheie SSH Weblate) și să-i acordați acces la toate depozitele pe care doriți să le traduceți. Această abordare este utilizată și pentru Weblate găzduit, pentru care există un utilizator dedicat weblate.

URL-uri interne Weblate

Împărtășiți o configurație de depozit între diferite componente, făcând referire la plasarea sa ca weblate://proiect/component în alte componente (legate). În acest fel, componentele legate utilizează configurația de depozit VCS a componentei principale (la care se face referire).

Atenționare

Îndepărtarea componentei principale înlătură și componentele legate.

Weblate ajustează automat URL-ul de depozit la crearea unei componente dacă găsește o componentă cu o configurație de depozit corespunzătoare. Puteți suprascrie acest lucru în ultimul pas al configurării componentei.

Motive pentru a utiliza acest lucru:

  • Economisește spațiu pe disc pe server, depozitul este stocat doar o singură dată.

  • Face ca actualizările să fie mai rapide, se actualizează doar un singur depozit.

  • Există doar un singur depozit exportat cu traducerile Weblate (vezi Exportator Git).

  • Unele addon-uri pot funcționa pe mai multe componente care împart un depozit, de exemplu Comenzi Git Squash.

Depozite HTTPS

Pentru a accesa depozite HTTPS protejate, includeți numele de utilizator și parola în URL. Nu vă faceți griji, Weblate va elimina aceste informații atunci când URL-ul este afișat utilizatorilor (dacă li se permite să vadă URL-ul depozitului).

De exemplu, URL-ul GitHub cu autentificarea adăugată ar putea arăta astfel: https://user:your_access_token@github.com/WeblateOrg/weblate.git.

Notă

Dacă numele de utilizator sau parola conțin caractere speciale, acestea trebuie să fie codificate URL, de exemplu https://user%40example.com:%24password%23@bitbucket.org/....

Utilizarea proxy

Dacă trebuie să accesați depozitele VCS HTTP/HTTPS utilizând un server proxy, configurați VCS pentru a-l utiliza.

Acest lucru se poate face folosind variabilele de mediu http_proxy, https_proxy și all_proxy (așa cum este descris în documentația cURL) sau prin impunerea acesteia în configurația VCS, de exemplu:

git config --global http.proxy http://user:password@proxy.example.com:80

Notă

Configurarea proxy-ului trebuie să fie făcută sub utilizatorul care rulează Weblate (a se vedea și Permisiunile sistemului de fișiere) și cu HOME=$DATA_DIR/home (a se vedea DATA_DIR), altfel Git executat de Weblate nu îl va folosi.

Git

Sugestie

Weblate are nevoie de Git 2.12 sau mai nou.

Vezi și

Consultați Accesarea depozitelor pentru informații despre cum să accesați diferite tipuri de depozite.

Git cu forța push

Acesta se comportă exact ca Git, singura diferență fiind că forțează întotdeauna împingerea. Acest lucru este destinat doar în cazul în care se utilizează un depozit separat pentru traduceri.

Atenționare

Folosiți-o cu prudență, deoarece acest lucru duce cu ușurință la pierderi de comenzi în depozitul din upstream.

Personalizarea configurației Git

Weblate invocă toate comenzile VCS cu HOME=$DATA_DIR/home (a se vedea DATA_DIR), prin urmare, editarea configurației utilizatorului trebuie să se facă în DATA_DIR/home/.git.

Ajutoare la distanță Git

De asemenea, puteți folosi Git remote helpers pentru a sprijini suplimentar alte sisteme de control al versiunilor, dar fiți pregătiți să depanați problemele pe care le-ar putea cauza.

În acest moment, ajutoarele pentru Bazaar și Mercurial sunt disponibile în depozite separate pe GitHub: git-remote-hg și git-remote-bzr. Descărcați-le manual și puneți-le undeva în calea dvs. de căutare (de exemplu ~/bin). Asigurați-vă că aveți instalate sistemele de control al versiunilor corespunzătoare.

Odată instalate acestea, aceste telecomenzi pot fi utilizate pentru a specifica un depozit în Weblate.

Pentru a clona proiectul gnuhello din Launchpad folosind Bazaar:

bzr::lp:gnuhello

Pentru depozitul hello de pe selenic.com folosind Mercurial:

hg::http://selenic.com/repo/hello

Atenționare

Inconvenientul utilizării ajutoarelor de la distanță Git este că, de exemplu, cu Mercurial, asistentul de la distanță creează uneori un nou tip atunci când împinge modificările înapoi.

GitHub

Nou în versiunea 2.3.

Aceasta adaugă un strat subțire deasupra Git folosind GitHub API pentru a permite împingerea modificărilor de traducere ca cereri de tragere, în loc să împingă direct în depozit.

Git introduce modificările direct într-un depozit, în timp ce GitHub creează cereri de extragere. Acesta din urmă nu este necesar pentru simpla accesare a depozitelor Git.

Trimiterea modificărilor pe GitHub sub formă de solicitări de tip pull

Dacă nu doriți să împingeți traducerile într-un depozit GitHub, acestea pot fi trimise sub forma uneia sau mai multor solicitări de tip pull.

Trebuie să configurați acreditările API pentru ca acest lucru să funcționeze.

GitLab

Nou în versiunea 3.9.

Acest lucru adaugă doar un strat subțire peste Git folosind GitLab API pentru a permite împingerea modificărilor de traducere ca cereri de fuziune în loc de împingerea directă în depozit.

Nu este necesar să folosiți acest lucru pentru a accesa depozitele Git, Git obișnuit funcționează la fel, singura diferență este modul în care este gestionat împingerea către un depozit. Cu Git, modificările sunt împinse direct în depozit, în timp ce GitLab creează cereri de fuziune.

Trimiterea modificărilor în GitLab ca cereri de îmbinare

Dacă nu doriți să împingeți traducerile într-un depozit GitLab, acestea pot fi trimise fie ca una sau mai multe cereri de fuziune.

Trebuie să configurați acreditările API pentru ca acest lucru să funcționeze.

Pagure

Nou în versiunea 4.3.2.

Acest lucru adaugă doar un strat subțire peste Git folosind Pagure API pentru a permite împingerea modificărilor de traducere ca cereri de fuziune în loc să le împingă direct în depozit.

Nu este necesar să folosiți acest lucru pentru a accesa depozitele Git, Git obișnuit funcționează la fel, singura diferență este modul în care este gestionat împingerea către un depozit. Cu Git modificările sunt împinse direct în depozit, în timp ce Pagure creează cereri de fuziune.

Împingerea modificărilor în Pagure ca cereri de îmbinare

Dacă nu doriți să împingeți traducerile într-un depozit Pagure, acestea pot fi trimise fie ca una sau mai multe cereri de îmbinare.

Trebuie să configurați acreditările API pentru ca acest lucru să funcționeze.

Gerrit

Nou în versiunea 2.2.

Adaugă un strat subțire deasupra Git folosind instrumentul git-review pentru a permite împingerea modificărilor de traducere ca cereri de revizuire Gerrit, în loc să le împingă direct în depozit.

Documentația Gerrit conține detalii cu privire la configurația necesară pentru a configura astfel de depozite.

Mercurial

Nou în versiunea 2.1.

Mercurial este un alt VCS pe care îl puteți utiliza direct în Weblate.

Notă

Ar trebui să funcționeze cu orice versiune Mercurial, dar uneori există modificări incompatibile la interfața de linie de comandă care întrerupe integrarea Weblate.

Vezi și

Consultați Accesarea depozitelor pentru informații despre cum să accesați diferite tipuri de depozite.

Subversiune

Nou în versiunea 2.8.

Weblate folosește git-svn pentru a interacționa cu depozitele subversion. Este un script Perl care permite utilizarea subversiunii de către un client Git, permițând utilizatorilor să mențină o clonă completă a depozitului intern și să facă confirmări la nivel local.

Notă

Weblate încearcă să detecteze automat aspectul depozitului Subversion - acceptă atât URL-uri directe pentru branșă, cât și depozite cu aspect standard (branches/, tags/ și trunk/). Mai multe informații despre acest lucru pot fi găsite în documentația git-svn. Dacă depozitul vostru nu are o dispunere standard și întâmpinați erori, încercați să includeți numele branșei în URL-ul depozitului și să lăsați ramificația goală.

Schimbat în versiunea 2.19: Înainte de aceasta, erau acceptate doar depozitele care foloseau aspectul standard.

Acreditive pentru Subversion

Weblate se așteaptă să acceptați certificatul în avans (și acreditările dumneavoastră, dacă este necesar). Acesta va căuta să le insereze în directorul DATA_DIR. Acceptați certificatul folosind svn o dată cu variabila de mediu $HOME setată la DATA_DIR:

# Use DATA_DIR as configured in Weblate settings.py, it is /app/data in the Docker
HOME=${DATA_DIR}/home svn co https://svn.example.com/example

Vezi și

DATA_DIR

Fișiere locale

Git

Sugestie

În partea de jos, acesta folosește Git. Necesită Git instalat și vă permite să treceți la utilizarea nativă a Git cu un istoric complet al traducerilor.

Nou în versiunea 3.8.

Weblate poate funcționa și fără un VCS la distanță. Traducerile inițiale sunt importate prin încărcarea lor. Ulterior, puteți înlocui fișiere individuale prin încărcarea fișierelor sau puteți adăuga șiruri de traduceri direct din Weblate (în prezent, disponibil numai pentru traduceri monolingve).

În fundal, Weblate creează un depozit Git pentru tine, iar toate modificările sunt urmărite în acesta. În cazul în care decideți ulterior să utilizați un VCS pentru a stoca traducerile, aveți deja un depozit în Weblate pe care vă puteți baza integrarea.

Weblate’s REST API

Nou în versiunea 2.6: API-ul REST este disponibil începând cu Weblate 2.6.

API-ul este accesibil pe URL-ul /api/` și se bazează pe Django REST framework. O puteți utiliza direct sau prin Client Weblate.

Autentificare și parametri generici

API-ul public al proiectului este disponibil fără autentificare, deși solicitările neautentificate sunt puternic limitate (implicit la 100 de solicitări pe zi), astfel încât se recomandă utilizarea autentificării. Autentificarea utilizează un token, pe care îl puteți obține în profilul vostru. Folosiți-l în antetul Authorization:

ANY /

Comportamentul generic de solicitare pentru API, antetele, codurile de stare și parametrii de aici se aplică și la toate punctele finale.

Parametrii de interogare
  • format – Formatul de răspuns (înlocuiește Accept). Valorile posibile depind de configurația cadrului REST; în mod implicit, sunt acceptate json și api`. Acesta din urmă oferă o interfață de browser web pentru API.

  • page – Returnează pagina dată de rezultate paginate (utilizați câmpurile next și previous în răspuns pentru a automatiza navigarea).

Capetele de cerere
  • Accept – tipul de conținut al răspunsului depinde de antetul Accept

  • Authorization – token opțional de autentificare ca Authorization: Token YOUR-TOKEN

Antetele de răspuns
  • Content-Type – acest lucru depinde de antetul Accept al cererii

  • Allow – lista de metode HTTP permise pentru obiect

Obiect JSON de răspuns
  • detail (string) – descriere detaliată a rezultatului (pentru codurile de stare HTTP altele decât 200 OK)

  • count (int) – numărul total de elemente pentru listele de obiecte

  • next (string) – pagina următoare URL pentru listele de obiecte

  • previous (string) – pagina anterioară URL pentru listele de obiecte

  • results (array) – rezultate pentru listele de obiecte

  • url (string) – URL pentru a accesa această resursă folosind API

  • web_url (string) – URL pentru a accesa această resursă folosind un browser web

Coduri de stare

Exemple de autentificare

Exemplu de cerere:

GET /api/ HTTP/1.1
Host: example.com
Accept: application/json, text/javascript
Authorization: Token YOUR-TOKEN

Exemplu de răspuns:

HTTP/1.0 200 OK
Date: Fri, 25 Mar 2016 09:46:12 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, HEAD, OPTIONS

{
    "projects":"http://example.com/api/projects/",
    "components":"http://example.com/api/components/",
    "translations":"http://example.com/api/translations/",
    "languages":"http://example.com/api/languages/"
}

Exemplu CURL:

curl \
    -H "Authorization: Token TOKEN" \
    https://example.com/api/

Exemple de trecere a parametrilor

Pentru metoda POST, parametrii pot fi specificați fie ca trimitere de formular (application/x-www-form-urlencoded), fie ca JSON (application/json).

Exemplu de cerere de formular:

POST /api/projects/hello/repository/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Authorization: Token TOKEN

operation=pull

Exemplu de cerere JSON:

POST /api/projects/hello/repository/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Authorization: Token TOKEN
Content-Length: 20

{"operation":"pull"}

Exemplu CURL:

curl \
    -d operation=pull \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/components/hello/weblate/repository/

CURL JSON exemplu:

curl \
    --data-binary '{"operation":"pull"}' \
    -H "Content-Type: application/json" \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/components/hello/weblate/repository/

Limitarea ratei API

Solicitările API sunt limitate; configurația implicită le limitează la 100 de solicitări pe zi pentru utilizatorii anonimi și la 5000 de solicitări pe oră pentru utilizatorii autentificați.

Limitarea ratei poate fi ajustată în fișierul settings.py; consultați Throttling in Django REST framework documentation pentru mai multe detalii despre cum să o configurați.

Starea de limitare a vitezei este raportată în următoarele anteturi:

X-RateLimit-Limit

Limitarea ratei de limitare a numărului de solicitări de efectuat

X-RateLimit-Remaining

Limita rămasă a cererilor

X-RateLimit-Reset

Numărul de secunde până la resetarea ferestrei ratelimit

Schimbat în versiunea 4.1: Au fost adăugate antetele de stare de limitare a vitezei.

Punct de intrare API

GET /api/

Punctul de intrare rădăcină al API.

Exemplu de cerere:

GET /api/ HTTP/1.1
Host: example.com
Accept: application/json, text/javascript
Authorization: Token YOUR-TOKEN

Exemplu de răspuns:

HTTP/1.0 200 OK
Date: Fri, 25 Mar 2016 09:46:12 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, HEAD, OPTIONS

{
    "projects":"http://example.com/api/projects/",
    "components":"http://example.com/api/components/",
    "translations":"http://example.com/api/translations/",
    "languages":"http://example.com/api/languages/"
}

Utilizatori

Nou în versiunea 4.0.

GET /api/users/

Returnează o listă de utilizatori dacă aveți permisiuni pentru a vedea gestionarea utilizatorilor. Dacă nu, atunci veți vedea doar propriile detalii.

Vezi și

Atributele obiectului Users sunt documentate la GET /api/users/(str:username)/.

POST /api/users/

Creează un nou utilizator.

Parametrii
  • username (string) – Nume utilizator

  • full_name (string) – Numele complet al utilizatorului

  • email (string) – E-mail de utilizator

  • is_superuser (boolean) – Este utilizatorul superutilizator? (opțional)

  • is_active (boolean) – Este utilizatorul activ? (opțional)

GET /api/users/(str: username)/

Returnează informații despre utilizatori.

Parametrii
  • username (string) – Numele de utilizator

Obiect JSON de răspuns
  • username (string) – numele de utilizator al unui utilizator

  • full_name (string) – numele complet al unui utilizator

  • email (string) – adresa de e-mail a unui utilizator

  • is_superuser (boolean) – dacă utilizatorul este un super-utilizator

  • is_active (boolean) – dacă utilizatorul este activ sau nu

  • date_joined (string) – data la care a fost creat utilizatorul

  • groups (array) – link către grupurile asociate; a se vedea GET /api/groups/(int:id)/

Exemplu de date JSON:

{
    "email": "user@example.com",
    "full_name": "Example User",
    "username": "exampleusername",
    "groups": [
        "http://example.com/api/groups/2/",
        "http://example.com/api/groups/3/"
    ],
    "is_superuser": true,
    "is_active": true,
    "date_joined": "2020-03-29T18:42:42.617681Z",
    "url": "http://example.com/api/users/exampleusername/",
    "statistics_url": "http://example.com/api/users/exampleusername/statistics/"
}
PUT /api/users/(str: username)/

Modifică parametrii utilizatorului.

Parametrii
  • username (string) – Numele de utilizator

Obiect JSON de răspuns
  • username (string) – numele de utilizator al unui utilizator

  • full_name (string) – numele complet al unui utilizator

  • email (string) – adresa de e-mail a unui utilizator

  • is_superuser (boolean) – dacă utilizatorul este un super-utilizator

  • is_active (boolean) – dacă utilizatorul este activ sau nu

  • date_joined (string) – data la care a fost creat utilizatorul

PATCH /api/users/(str: username)/

Modifică parametrii utilizatorului.

Parametrii
  • username (string) – Numele de utilizator

Obiect JSON de răspuns
  • username (string) – numele de utilizator al unui utilizator

  • full_name (string) – numele complet al unui utilizator

  • email (string) – adresa de e-mail a unui utilizator

  • is_superuser (boolean) – dacă utilizatorul este un super-utilizator

  • is_active (boolean) – dacă utilizatorul este activ sau nu

  • date_joined (string) – data la care a fost creat utilizatorul

DELETE /api/users/(str: username)/

Șterge toate informațiile despre utilizator și marchează utilizatorul ca fiind inactiv.

Parametrii
  • username (string) – Numele de utilizator

POST /api/users/(str: username)/groups/

Asociați grupuri cu un utilizator.

Parametrii
  • username (string) – Numele de utilizator

Parametrii formularului
  • string group_id – ID-ul unic al grupului

GET /api/users/(str: username)/statistics/

Listează statisticile unui utilizator.

Parametrii
  • username (string) – Numele de utilizator

Obiect JSON de răspuns
  • translated (int) – Numărul de traduceri efectuate de către utilizator

  • suggested (int) – Numărul de sugestii de către utilizator

  • uploaded (int) – Numărul de încărcări de către utilizator

  • commented (int) – Numărul de comentarii ale utilizatorului

  • languages (int) – Numărul de limbi pe care le poate traduce utilizatorul

GET /api/users/(str: username)/notifications/

Lista abonamentelor unui utilizator.

Parametrii
  • username (string) – Numele de utilizator

POST /api/users/(str: username)/notifications/

Asociați abonamente cu un utilizator.

Parametrii
  • username (string) – Numele de utilizator

Obiect JSON de cerere
  • notification (string) – Denumirea notificării înregistrate

  • scope (int) – Domeniul de aplicare al notificării din opțiunile disponibile

  • frequency (int) – Alegerile de frecvență pentru notificări

GET /api/users/(str: username)/notifications/(int: subscription_id)/

Obține un abonament asociat cu un utilizator.

Parametrii
  • username (string) – Numele de utilizator

  • subscription_id (int) – ID-ul notificării înregistrate

PUT /api/users/(str: username)/notifications/(int: subscription_id)/

Editați un abonament asociat unui utilizator.

Parametrii
  • username (string) – Numele de utilizator

  • subscription_id (int) – ID-ul notificării înregistrate

Obiect JSON de cerere
  • notification (string) – Denumirea notificării înregistrate

  • scope (int) – Domeniul de aplicare al notificării din opțiunile disponibile

  • frequency (int) – Alegerile de frecvență pentru notificări

PATCH /api/users/(str: username)/notifications/(int: subscription_id)/

Editați un abonament asociat unui utilizator.

Parametrii
  • username (string) – Numele de utilizator

  • subscription_id (int) – ID-ul notificării înregistrate

Obiect JSON de cerere
  • notification (string) – Denumirea notificării înregistrate

  • scope (int) – Domeniul de aplicare al notificării din opțiunile disponibile

  • frequency (int) – Alegerile de frecvență pentru notificări

DELETE /api/users/(str: username)/notifications/(int: subscription_id)/

Ștergeți un abonament asociat unui utilizator.

Parametrii
  • username (string) – Numele de utilizator

  • subscription_id – Denumirea notificării înregistrate

  • subscription_id – int

Grupuri

Nou în versiunea 4.0.

GET /api/groups/

Returnează o listă de grupuri, dacă aveți permisiuni pentru a vedea grupuri de gestionare. Dacă nu, atunci veți vedea doar grupurile din care face parte utilizatorul.

Vezi și

Atributele obiectelor de grup sunt documentate la GET /api/groups/(int:id)/.

POST /api/groups/

Creează un nou grup.

Parametrii
  • name (string) – Numele grupului

  • project_selection (int) – Selecția grupului de proiecte din opțiunile date

  • language_selection (int) – Selecția grupului de proiecte din opțiunile date

GET /api/groups/(int: id)/

Returnează informații despre grup.

Parametrii
  • id (int) – ID-ul grupului

Obiect JSON de răspuns

Exemplu de date JSON:

{
    "name": "Guests",
    "project_selection": 3,
    "language_selection": 1,
    "url": "http://example.com/api/groups/1/",
    "roles": [
        "http://example.com/api/roles/1/",
        "http://example.com/api/roles/2/"
    ],
    "languages": [
        "http://example.com/api/languages/en/",
        "http://example.com/api/languages/cs/",
    ],
    "projects": [
        "http://example.com/api/projects/demo1/",
        "http://example.com/api/projects/demo/"
    ],
    "componentlist": "http://example.com/api/component-lists/new/",
    "components": [
        "http://example.com/api/components/demo/weblate/"
    ]
}
PUT /api/groups/(int: id)/

Modifică parametrii grupului.

Parametrii
  • id (int) – ID-ul grupului

Obiect JSON de răspuns
  • name (string) – numele unui grup

  • project_selection (int) – număr întreg care corespunde grupului de proiecte

  • language_selection (int) – număr întreg care corespunde grupului de limbi

PATCH /api/groups/(int: id)/

Modifică parametrii grupului.

Parametrii
  • id (int) – ID-ul grupului

Obiect JSON de răspuns
  • name (string) – numele unui grup

  • project_selection (int) – număr întreg care corespunde grupului de proiecte

  • language_selection (int) – număr întreg care corespunde grupului de limbi

DELETE /api/groups/(int: id)/

Șterge grupul.

Parametrii
  • id (int) – ID-ul grupului

POST /api/groups/(int: id)/roles/

Asociați rolurile cu un grup.

Parametrii
  • id (int) – ID-ul grupului

Parametrii formularului
  • string role_id – ID-ul unic de rol

POST /api/groups/(int: id)/components/

Asociați componentele cu un grup.

Parametrii
  • id (int) – ID-ul grupului

Parametrii formularului
  • string component_id – ID-ul unic al componentei

DELETE /api/groups/(int: id)/components/(int: component_id)

Ștergeți componenta dintr-un grup.

Parametrii
  • id (int) – ID-ul grupului

  • component_id (int) – ID-ul unic al componentei

POST /api/groups/(int: id)/projects/

Asociați proiectele cu un grup.

Parametrii
  • id (int) – ID-ul grupului

Parametrii formularului
  • string project_id – ID-ul unic al proiectului

DELETE /api/groups/(int: id)/projects/(int: project_id)

Ștergeți proiectul dintr-un grup.

Parametrii
  • id (int) – ID-ul grupului

  • project_id (int) – ID-ul unic al proiectului

POST /api/groups/(int: id)/languages/

Asociați limbile cu un grup.

Parametrii
  • id (int) – ID-ul grupului

Parametrii formularului
  • string language_code – Codul unic de limbă

DELETE /api/groups/(int: id)/languages/(string: language_code)

Ștergeți limba dintr-un grup.

Parametrii
  • id (int) – ID-ul grupului

  • language_code (string) – Codul unic de limbă

POST /api/groups/(int: id)/componentlists/

Asociază listele de componente cu un grup.

Parametrii
  • id (int) – ID-ul grupului

Parametrii formularului
  • string component_list_id – ID-ul unic al listei de componente

DELETE /api/groups/(int: id)/componentlists/(int: component_list_id)

Ștergeți lista de componente dintr-un grup.

Parametrii
  • id (int) – ID-ul grupului

  • component_list_id (int) – ID-ul unic al listei de componente

Roluri

GET /api/roles/

Returnează o listă cu toate rolurile asociate cu utilizatorul. Dacă utilizatorul este superutilizator, atunci se returnează lista tuturor rolurilor existente.

Vezi și

Atributele obiectului Roles sunt documentate la GET /api/roles/(int:id)/.

POST /api/roles/

Creează un nou rol.

Parametrii
  • name (string) – Numele rolului

  • permissions (array) – Listă de nume de cod ale permisiunilor

GET /api/roles/(int: id)/

Returnează informații despre un rol.

Parametrii
  • id (int) – ID rol

Obiect JSON de răspuns
  • name (string) – Numele rolului

  • permissions (array) – lista numelor de cod ale autorizațiilor

Exemplu de date JSON:

{
    "name": "Access repository",
    "permissions": [
        "vcs.access",
        "vcs.view"
    ],
    "url": "http://example.com/api/roles/1/",
}
PUT /api/roles/(int: id)/

Modifică parametrii rolului.

Parametrii
  • id (int) – ID-ul rolului

Obiect JSON de răspuns
  • name (string) – Numele rolului

  • permissions (array) – lista numelor de cod ale autorizațiilor

PATCH /api/roles/(int: id)/

Modifică parametrii rolului.

Parametrii
  • id (int) – ID-ul rolului

Obiect JSON de răspuns
  • name (string) – Numele rolului

  • permissions (array) – lista numelor de cod ale autorizațiilor

DELETE /api/roles/(int: id)/

Șterge rolul.

Parametrii
  • id (int) – ID-ul rolului

Limbi

GET /api/languages/

Returnează o listă cu toate limbile.

Vezi și

Atributele obiectelor de limbă sunt documentate la GET /api/languages/(string:language)/.

POST /api/languages/

Creează o nouă limbă.

Parametrii
  • code (string) – Numele limbii

  • name (string) – Numele limbii

  • direction (string) – Direcția textului

  • plural (object) – Limba formula plural și numărul

GET /api/languages/(string: language)/

Returnează informații despre o limbă.

Parametrii
  • language (string) – Codul limbii

Obiect JSON de răspuns
  • code (string) – Codul limbii

  • direction (string) – Direcția textului

  • plural (object) – Obiect al limbajului informație plurală

  • aliases (array) – Array de pseudonime pentru limbă

Exemplu de date JSON:

{
    "code": "en",
    "direction": "ltr",
    "name": "English",
    "plural": {
        "id": 75,
        "source": 0,
        "number": 2,
        "formula": "n != 1",
        "type": 1
    },
    "aliases": [
        "english",
        "en_en",
        "base",
        "source",
        "eng"
    ],
    "url": "http://example.com/api/languages/en/",
    "web_url": "http://example.com/languages/en/",
    "statistics_url": "http://example.com/api/languages/en/statistics/"
}
PUT /api/languages/(string: language)/

Modifică parametrii de limbă.

Parametrii
  • language (string) – Codul limbii

Obiect JSON de cerere
  • name (string) – Numele limbii

  • direction (string) – Direcția textului

  • plural (object) – Limba plural detalii

PATCH /api/languages/(string: language)/

Modifică parametrii de limbă.

Parametrii
  • language (string) – Codul limbii

Obiect JSON de cerere
  • name (string) – Numele limbii

  • direction (string) – Direcția textului

  • plural (object) – Limba plural detalii

DELETE /api/languages/(string: language)/

Șterge limba.

Parametrii
  • language (string) – Codul limbii

GET /api/languages/(string: language)/statistics/

Returnează statisticile pentru o limbă.

Parametrii
  • language (string) – Codul limbii

Obiect JSON de răspuns
  • total (int) – numărul total de șiruri de caractere

  • total_words (int) – numărul total de cuvinte

  • last_change (timestamp) – ultimele modificări ale limbii

  • recent_changes (int) – numărul total de modificări

  • translated (int) – numărul de șiruri de caractere traduse

  • translated_percent (float) – procentul de șiruri de caractere traduse

  • translated_words (int) – numărul de cuvinte traduse

  • translated_words_percent (int) – procentul de cuvinte traduse

  • translated_chars (int) – numărul de caractere traduse

  • translated_chars_percent (int) – procentul de caractere traduse

  • total_chars (int) – numărul total de caractere

  • fuzzy (int) – numărul de șiruri fuzzy (marcate pentru editare)

  • fuzzy_percent (int) – procentajul de șiruri fuzzy (marcate pentru editare)

  • failing (int) – numărul de șiruri eșuate

  • failing – procentul de șiruri de caractere nereușite

Proiecte

GET /api/projects/

Returnează o listă cu toate proiectele.

Vezi și

Atributele obiectului proiect sunt documentate la GET /api/projects/(string:project)/.

POST /api/projects/

Nou în versiunea 3.9.

Creează un nou proiect.

Parametrii
  • name (string) – Denumire proiect

  • slug (string) – Limbajul proiectului

  • web (string) – Website-ul proiectului

GET /api/projects/(string: project)/

Returnează informații despre un proiect.

Parametrii
  • project (string) – Lipsă URL a proiectului

Obiect JSON de răspuns

Exemplu de date JSON:

{
    "name": "Hello",
    "slug": "hello",
    "url": "http://example.com/api/projects/hello/",
    "web": "https://weblate.org/",
    "web_url": "http://example.com/projects/hello/"
}
PATCH /api/projects/(string: project)/

Nou în versiunea 4.3.

Editarea unui proiect printr-o cerere PATCH.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

PUT /api/projects/(string: project)/

Nou în versiunea 4.3.

Editarea unui proiect printr-o cerere PUT.

Parametrii
  • project (string) – Lipsă URL a proiectului

DELETE /api/projects/(string: project)/

Nou în versiunea 3.9.

Șterge un proiect.

Parametrii
  • project (string) – Lipsă URL a proiectului

GET /api/projects/(string: project)/changes/

Returnează o listă de modificări ale proiectului. Aceasta este, în esență, o listă GET /api/changes/ care acceptă aceiași parametri.

Parametrii
  • project (string) – Lipsă URL a proiectului

Obiect JSON de răspuns
GET /api/projects/(string: project)/repository/

Returnează informații despre starea depozitului VCS. Acest endpoint conține doar un rezumat general pentru toate depozitele din proiect. Pentru a obține o stare mai detaliată, utilizați GET /api/components/(string:project)/(string:component)/repository/.

Parametrii
  • project (string) – Lipsă URL a proiectului

Obiect JSON de răspuns
  • needs_commit (boolean) – dacă există modificări în așteptare pentru a fi confirmate

  • needs_merge (boolean) – dacă există modificări în amonte de fuzionat

  • needs_push (boolean) – dacă există modificări locale care să fie împinse

Exemplu de date JSON:

{
    "needs_commit": true,
    "needs_merge": false,
    "needs_push": true
}
POST /api/projects/(string: project)/repository/

Efectuează operațiunea dată asupra depozitului VCS.

Parametrii
  • project (string) – Lipsă URL a proiectului

Obiect JSON de cerere
  • operation (string) – Operațiunea de efectuat: una dintre push, pull, commit, reset, cleanup, file-sync

Obiect JSON de răspuns
  • result (boolean) – rezultatul operațiunii

Exemplu CURL:

curl \
    -d operation=pull \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/projects/hello/repository/

Exemplu de cerere JSON:

POST /api/projects/hello/repository/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Authorization: Token TOKEN
Content-Length: 20

{"operation":"pull"}

Exemplu de răspuns JSON:

HTTP/1.0 200 OK
Date: Tue, 12 Apr 2016 09:32:50 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, POST, HEAD, OPTIONS

{"result":true}
GET /api/projects/(string: project)/components/

Returnează o listă a componentelor de traducere din proiectul dat.

Parametrii
  • project (string) – Lipsă URL a proiectului

Obiect JSON de răspuns
POST /api/projects/(string: project)/components/

Nou în versiunea 3.9.

Schimbat în versiunea 4.3: Parametrii zipfile și docfile sunt acum acceptați pentru componentele fără VCS, a se vedea Fișiere locale.

Schimbat în versiunea 4.6: Depozitele clonate sunt acum partajate automat în cadrul unui proiect folosind URL-uri interne Weblate. Utilizați disable_autoshare pentru a dezactiva acest lucru.

Creează componente de traducere în proiectul dat.

Sugestie

Utilizați URL-uri interne Weblate atunci când creați mai multe componente dintr-un singur depozit VCS.

Notă

Cea mai mare parte a creării de componente are loc în fundal. Verificați atributul task_url al componentei create și urmăriți progresul acolo.

Parametrii
  • project (string) – Lipsă URL a proiectului

Parametrii formularului
  • file zipfile – Fișier ZIP pentru a încărca în Weblate pentru inițializarea traducerilor

  • file docfile – Document de tradus

  • boolean disable_autoshare – Dezactivează partajarea automată a depozitelor prin URL-uri interne Weblate.

Obiect JSON de răspuns

JSON nu poate fi utilizat la încărcarea fișierelor folosind parametrii zipfile și docfile. Datele trebuie să fie încărcate ca multipart/form-data.

Exemplu de solicitare a formularului CURL:

curl \
    --form docfile=@strings.html \
    --form name=Weblate \
    --form slug=weblate \
    --form file_format=html \
    --form new_lang=add \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/projects/hello/components/

Exemplu de cerere JSONURL JSON:

curl \
    --data-binary '{
        "branch": "main",
        "file_format": "po",
        "filemask": "po/*.po",
        "git_export": "",
        "license": "",
        "license_url": "",
        "name": "Weblate",
        "slug": "weblate",
        "repo": "file:///home/nijel/work/weblate-hello",
        "template": "",
        "new_base": "",
        "vcs": "git"
    }' \
    -H "Content-Type: application/json" \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/projects/hello/components/

Exemplu de cerere JSON:

POST /api/projects/hello/components/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Authorization: Token TOKEN
Content-Length: 20

{
    "branch": "main",
    "file_format": "po",
    "filemask": "po/*.po",
    "git_export": "",
    "license": "",
    "license_url": "",
    "name": "Weblate",
    "slug": "weblate",
    "repo": "file:///home/nijel/work/weblate-hello",
    "template": "",
    "new_base": "",
    "vcs": "git"
}

Exemplu de răspuns JSON:

HTTP/1.0 200 OK
Date: Tue, 12 Apr 2016 09:32:50 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, POST, HEAD, OPTIONS

{
    "branch": "main",
    "file_format": "po",
    "filemask": "po/*.po",
    "git_export": "",
    "license": "",
    "license_url": "",
    "name": "Weblate",
    "slug": "weblate",
    "project": {
        "name": "Hello",
        "slug": "hello",
        "source_language": {
            "code": "en",
            "direction": "ltr",
            "name": "English",
            "url": "http://example.com/api/languages/en/",
            "web_url": "http://example.com/languages/en/"
        },
        "url": "http://example.com/api/projects/hello/",
        "web": "https://weblate.org/",
        "web_url": "http://example.com/projects/hello/"
    },
    "repo": "file:///home/nijel/work/weblate-hello",
    "template": "",
    "new_base": "",
    "url": "http://example.com/api/components/hello/weblate/",
    "vcs": "git",
    "web_url": "http://example.com/projects/hello/weblate/"
}
GET /api/projects/(string: project)/languages/

Returnează statistici paginate pentru toate limbile din cadrul unui proiect.

Nou în versiunea 3.8.

Parametrii
  • project (string) – Lipsă URL a proiectului

Obiect JSON de răspuns
  • results (array) – matrice de obiecte de statistici de traducere

  • language (string) – numele limbii

  • code (string) – codul limbii

  • total (int) – numărul total de șiruri de caractere

  • translated (int) – numărul de șiruri de caractere traduse

  • translated_percent (float) – procentul de șiruri de caractere traduse

  • total_words (int) – numărul total de cuvinte

  • translated_words (int) – numărul de cuvinte traduse

  • words_percent (float) – procentul de cuvinte traduse

GET /api/projects/(string: project)/statistics/

Returnează statisticile pentru un proiect.

Nou în versiunea 3.8.

Parametrii
  • project (string) – Lipsă URL a proiectului

Obiect JSON de răspuns
  • total (int) – numărul total de șiruri de caractere

  • translated (int) – numărul de șiruri de caractere traduse

  • translated_percent (float) – procentul de șiruri de caractere traduse

  • total_words (int) – numărul total de cuvinte

  • translated_words (int) – numărul de cuvinte traduse

  • words_percent (float) – procentul de cuvinte traduse

Componente

GET /api/components/

Returnează o listă de componente de traducere.

Vezi și

Atributele obiectelor componente sunt documentate la GET /api/components/(string:project)/(string:component)/.

GET /api/components/(string: project)/(string: component)/

Returnează informații despre componenta de traducere.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

Obiect JSON de răspuns

Exemplu de date JSON:

{
    "branch": "main",
    "file_format": "po",
    "filemask": "po/*.po",
    "git_export": "",
    "license": "",
    "license_url": "",
    "name": "Weblate",
    "slug": "weblate",
    "project": {
        "name": "Hello",
        "slug": "hello",
        "source_language": {
            "code": "en",
            "direction": "ltr",
            "name": "English",
            "url": "http://example.com/api/languages/en/",
            "web_url": "http://example.com/languages/en/"
        },
        "url": "http://example.com/api/projects/hello/",
        "web": "https://weblate.org/",
        "web_url": "http://example.com/projects/hello/"
    },
    "source_language": {
        "code": "en",
        "direction": "ltr",
        "name": "English",
        "url": "http://example.com/api/languages/en/",
        "web_url": "http://example.com/languages/en/"
    },
    "repo": "file:///home/nijel/work/weblate-hello",
    "template": "",
    "new_base": "",
    "url": "http://example.com/api/components/hello/weblate/",
    "vcs": "git",
    "web_url": "http://example.com/projects/hello/weblate/"
}
PATCH /api/components/(string: project)/(string: component)/

Editarea unei componente printr-o cerere PATCH.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

  • source_language (string) – Codul sursă al limbajului proiectului (opțional)

Obiect JSON de cerere
  • name (string) – denumirea componentei

  • slug (string) – sloganul componentei

  • repo (string) – URL-ul depozitului VCS

Exemplu CURL:

curl \
    --data-binary '{"name": "new name"}' \
    -H "Content-Type: application/json" \
    -H "Authorization: Token TOKEN" \
    PATCH http://example.com/api/projects/hello/components/

Exemplu de cerere JSON:

PATCH /api/projects/hello/components/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Authorization: Token TOKEN
Content-Length: 20

{
    "name": "new name"
}

Exemplu de răspuns JSON:

HTTP/1.0 200 OK
Date: Tue, 12 Apr 2016 09:32:50 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, POST, HEAD, OPTIONS

{
    "branch": "main",
    "file_format": "po",
    "filemask": "po/*.po",
    "git_export": "",
    "license": "",
    "license_url": "",
    "name": "new name",
    "slug": "weblate",
    "project": {
        "name": "Hello",
        "slug": "hello",
        "source_language": {
            "code": "en",
            "direction": "ltr",
            "name": "English",
            "url": "http://example.com/api/languages/en/",
            "web_url": "http://example.com/languages/en/"
        },
        "url": "http://example.com/api/projects/hello/",
        "web": "https://weblate.org/",
        "web_url": "http://example.com/projects/hello/"
    },
    "repo": "file:///home/nijel/work/weblate-hello",
    "template": "",
    "new_base": "",
    "url": "http://example.com/api/components/hello/weblate/",
    "vcs": "git",
    "web_url": "http://example.com/projects/hello/weblate/"
}
PUT /api/components/(string: project)/(string: component)/

Editarea unei componente printr-o cerere PUT.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

Obiect JSON de cerere
  • branch (string) – Branșa depozitului VCS

  • file_format (string) – formatul de fișier al traducerilor

  • filemask (string) – masca de fișiere de traducere din depozit

  • name (string) – denumirea componentei

  • slug (string) – sloganul componentei

  • repo (string) – URL-ul depozitului VCS

  • template (string) – fișier de bază pentru traducerile monolingve

  • new_base (string) – fișier de bază pentru adăugarea de noi traduceri

  • vcs (string) – sistem de control al versiunilor

DELETE /api/components/(string: project)/(string: component)/

Nou în versiunea 3.9.

Șterge o componentă.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

GET /api/components/(string: project)/(string: component)/changes/

Returnează o listă de modificări ale componentelor. Aceasta este, în esență, o componentă GET /api/changes/ care acceptă aceiași parametri.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

Obiect JSON de răspuns
GET /api/components/(string: project)/(string: component)/file/

Nou în versiunea 4.9.

Downloads all available translations associated with the component as an archive file using the requested format.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

Parametrii de interogare
  • format (string) – The archive format to use; If not specified, defaults to zip; Supported formats: zip

GET /api/components/(string: project)/(string: component)/screenshots/

Returnează o listă de capturi de ecran ale componentelor.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

Obiect JSON de răspuns
GET /api/components/(string: project)/(string: component)/lock/

Returnează starea de blocare a componentelor.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

Obiect JSON de răspuns
  • locked (boolean) – dacă componenta este blocată pentru actualizări

Exemplu de date JSON:

{
    "locked": false
}
POST /api/components/(string: project)/(string: component)/lock/

Stabilește starea de blocare a componentelor.

Răspunsul este același cu GET /api/components/(string:project)/(string:component)/lock/.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

Obiect JSON de cerere
  • lock – Boolean dacă se blochează sau nu.

Exemplu CURL:

curl \
    -d lock=true \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/components/hello/weblate/repository/

Exemplu de cerere JSON:

POST /api/components/hello/weblate/repository/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Authorization: Token TOKEN
Content-Length: 20

{"lock": true}

Exemplu de răspuns JSON:

HTTP/1.0 200 OK
Date: Tue, 12 Apr 2016 09:32:50 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, POST, HEAD, OPTIONS

{"locked":true}
GET /api/components/(string: project)/(string: component)/repository/

Returnează informații despre starea depozitului VCS.

Răspunsul este același ca pentru GET /api/projects/(string:project)/repository/.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

Obiect JSON de răspuns
  • needs_commit (boolean) – dacă există modificări în așteptare pentru a fi confirmate

  • needs_merge (boolean) – dacă există modificări în amonte de fuzionat

  • needs_push (boolean) – dacă există modificări locale care să fie împinse

  • remote_commit (string) – Informații de comandă la distanță

  • status (string) – Starea depozitului VCS raportată de VCS

  • merge_failure – Text care descrie eșecul fuziunii sau nul dacă nu există niciunul

POST /api/components/(string: project)/(string: component)/repository/

Efectuează operațiunea dată asupra unui depozit VCS.

Consultați POST /api/projects/(string:project)/repository/ pentru documentație.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

Obiect JSON de cerere
  • operation (string) – Operațiunea de efectuat: una dintre push, pull, commit, reset, cleanup

Obiect JSON de răspuns
  • result (boolean) – rezultatul operațiunii

Exemplu CURL:

curl \
    -d operation=pull \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/components/hello/weblate/repository/

Exemplu de cerere JSON:

POST /api/components/hello/weblate/repository/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Authorization: Token TOKEN
Content-Length: 20

{"operation":"pull"}

Exemplu de răspuns JSON:

HTTP/1.0 200 OK
Date: Tue, 12 Apr 2016 09:32:50 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, POST, HEAD, OPTIONS

{"result":true}
GET /api/components/(string: project)/(string: component)/monolingual_base/

Descarcă fișierul de bază pentru traducerile monolingve.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

GET /api/components/(string: project)/(string: component)/new_template/

Descarcă fișierul șablon pentru noile traduceri.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

GET /api/components/(string: project)/(string: component)/translations/

Returnează o listă de obiecte de traducere din componenta dată.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

Obiect JSON de răspuns
POST /api/components/(string: project)/(string: component)/translations/

Creează o nouă traducere în componenta dată.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

Obiect JSON de cerere
Obiect JSON de răspuns
  • result (object) – nou obiect de traducere creat

Exemplu CURL:

curl \
    -d language_code=cs \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/projects/hello/components/

Exemplu de cerere JSON:

POST /api/projects/hello/components/ HTTP/1.1
Host: example.com
Accept: application/json
Content-Type: application/json
Authorization: Token TOKEN
Content-Length: 20

{"language_code": "cs"}

Exemplu de răspuns JSON:

HTTP/1.0 200 OK
Date: Tue, 12 Apr 2016 09:32:50 GMT
Server: WSGIServer/0.1 Python/2.7.11+
Vary: Accept, Accept-Language, Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Language: en
Allow: GET, POST, HEAD, OPTIONS

{
    "failing_checks": 0,
    "failing_checks_percent": 0,
    "failing_checks_words": 0,
    "filename": "po/cs.po",
    "fuzzy": 0,
    "fuzzy_percent": 0.0,
    "fuzzy_words": 0,
    "have_comment": 0,
    "have_suggestion": 0,
    "is_template": false,
    "is_source": false,
    "language": {
        "code": "cs",
        "direction": "ltr",
        "name": "Czech",
        "url": "http://example.com/api/languages/cs/",
        "web_url": "http://example.com/languages/cs/"
    },
    "language_code": "cs",
    "id": 125,
    "last_author": null,
    "last_change": null,
    "share_url": "http://example.com/engage/hello/cs/",
    "total": 4,
    "total_words": 15,
    "translate_url": "http://example.com/translate/hello/weblate/cs/",
    "translated": 0,
    "translated_percent": 0.0,
    "translated_words": 0,
    "url": "http://example.com/api/translations/hello/weblate/cs/",
    "web_url": "http://example.com/projects/hello/weblate/cs/"
}
GET /api/components/(string: project)/(string: component)/statistics/

Returnează statistici paginate pentru toate traducerile din cadrul componentei.

Nou în versiunea 2.7.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

Obiect JSON de răspuns

Returnează proiectele legate de o componentă.

Nou în versiunea 4.5.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

Obiect JSON de răspuns
POST /api/components/(string: project)/(string: component)/links/

Asociați proiectul cu o componentă.

Nou în versiunea 4.5.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

Parametrii formularului
  • string project_slug – Limbajul proiectului

Eliminarea asocierii unui proiect cu o componentă.

Nou în versiunea 4.5.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

  • project_slug (string) – Denumirea proiectului care trebuie eliminat

Traduceri

GET /api/translations/

Returnează o listă de traduceri.

Vezi și

Atributele obiectelor de traducere sunt documentate la GET /api/translations/(string:project)/(string:component)/(string:language)/.

GET /api/translations/(string: project)/(string: component)/(string: language)/

Returnează informații despre o traducere.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

  • language (string) – Codul limbii de traducere

Obiect JSON de răspuns
  • component (object) – obiect component; vezi GET /api/components/(string:project)/(string:component)/

  • failing_checks (int) – numărul de șiruri de caractere care nu au fost verificate

  • failing_checks_percent (float) – procentul de șiruri de caractere care nu trec controalele

  • failing_checks_words (int) – numărul de cuvinte cu verificări nereușite

  • filename (string) – numele fișierului de traducere

  • fuzzy (int) – numărul de șiruri fuzzy (marcate pentru editare)

  • fuzzy_percent (float) – procentajul de șiruri fuzzy (marcate pentru editare)

  • fuzzy_words (int) – numărul de cuvinte din șirurile fuzzy (marcate pentru editare)

  • have_comment (int) – numărul de șiruri de caractere cu comentarii

  • have_suggestion (int) – numărul de șiruri cu sugestie

  • is_template (boolean) – dacă traducerea are o bază monolingvă

  • language (object) – obiect de limbă sursă; a se vedea GET /api/languages/(string:language)/

  • language_code (string) – codul limbii utilizat în depozit; acesta poate fi diferit de codul limbii din obiectul lingvistic

  • last_author (string) – numele ultimului autor

  • last_change (timestamp) – data și ora ultimei modificări

  • revision (string) – hash de revizuire pentru fișier

  • share_url (string) – URL pentru partajare care duce la pagina de implicare

  • total (int) – numărul total de șiruri de caractere

  • total_words (int) – numărul total de cuvinte

  • translate_url (string) – URL pentru traducere

  • translated (int) – numărul de șiruri de caractere traduse

  • translated_percent (float) – procentul de șiruri de caractere traduse

  • translated_words (int) – numărul de cuvinte traduse

  • repository_url (string) – URL către starea depozitului; vezi GET /api/translations/(string:project)/(string:component)/(string:language)/repository/

  • file_url (string) – URL către obiectul fișier; vezi GET /api/translations/(string:project)/(string:component)/(string:language)/file/

  • changes_list_url (string) – URL către lista de modificări; vezi GET /api/translations/(string:project)/(string:component)/(string:language)/changes/

  • units_list_url (string) – URL către lista de șiruri de caractere; vezi GET /api/translations/(string:project)/(string:component)/(string:language)/units/

Exemplu de date JSON:

{
    "component": {
        "branch": "main",
        "file_format": "po",
        "filemask": "po/*.po",
        "git_export": "",
        "license": "",
        "license_url": "",
        "name": "Weblate",
        "new_base": "",
        "project": {
            "name": "Hello",
            "slug": "hello",
            "source_language": {
                "code": "en",
                "direction": "ltr",
                "name": "English",
                "url": "http://example.com/api/languages/en/",
                "web_url": "http://example.com/languages/en/"
            },
            "url": "http://example.com/api/projects/hello/",
            "web": "https://weblate.org/",
            "web_url": "http://example.com/projects/hello/"
        },
        "repo": "file:///home/nijel/work/weblate-hello",
        "slug": "weblate",
        "template": "",
        "url": "http://example.com/api/components/hello/weblate/",
        "vcs": "git",
        "web_url": "http://example.com/projects/hello/weblate/"
    },
    "failing_checks": 3,
    "failing_checks_percent": 75.0,
    "failing_checks_words": 11,
    "filename": "po/cs.po",
    "fuzzy": 0,
    "fuzzy_percent": 0.0,
    "fuzzy_words": 0,
    "have_comment": 0,
    "have_suggestion": 0,
    "is_template": false,
    "language": {
        "code": "cs",
        "direction": "ltr",
        "name": "Czech",
        "url": "http://example.com/api/languages/cs/",
        "web_url": "http://example.com/languages/cs/"
    },
    "language_code": "cs",
    "last_author": "Weblate Admin",
    "last_change": "2016-03-07T10:20:05.499",
    "revision": "7ddfafe6daaf57fc8654cc852ea6be212b015792",
    "share_url": "http://example.com/engage/hello/cs/",
    "total": 4,
    "total_words": 15,
    "translate_url": "http://example.com/translate/hello/weblate/cs/",
    "translated": 4,
    "translated_percent": 100.0,
    "translated_words": 15,
    "url": "http://example.com/api/translations/hello/weblate/cs/",
    "web_url": "http://example.com/projects/hello/weblate/cs/"
}
DELETE /api/translations/(string: project)/(string: component)/(string: language)/

Nou în versiunea 3.9.

Șterge o traducere.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

  • language (string) – Codul limbii de traducere

GET /api/translations/(string: project)/(string: component)/(string: language)/changes/

Returnează o listă de modificări de traducere. Aceasta este, în esență, o listă GET /api/changes/ care acceptă aceiași parametri.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

  • language (string) – Codul limbii de traducere

Obiect JSON de răspuns
GET /api/translations/(string: project)/(string: component)/(string: language)/units/

Returnează o listă de unități de traducere.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

  • language (string) – Codul limbii de traducere

  • q (string) – Șir de interogare pentru căutare Căutare (opțional)

Obiect JSON de răspuns
POST /api/translations/(string: project)/(string: component)/(string: language)/units/

Adăugați o nouă unitate monolingvă.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

  • language (string) – Codul limbii de traducere

Obiect JSON de cerere
  • key (string) – Denumirea unității de traducere

  • value (array) – Valoarea unității de traducere

POST /api/translations/(string: project)/(string: component)/(string: language)/autotranslate/

Declanșarea traducerii automate.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

  • language (string) – Codul limbii de traducere

Obiect JSON de cerere
  • mode (string) – Modul de traducere automată

  • filter_type (string) – Tip de filtru de traducere automată

  • auto_source (string) – Sursa de traducere automată

  • component (string) – Activați contribuția la memoria de traducere partajată pentru proiect pentru a avea acces la componente suplimentare.

  • engines (array) – Motoare de traducere automată

  • threshold (string) – Prag de punctaj

GET /api/translations/(string: project)/(string: component)/(string: language)/file/

Descarcă fișierul de traducere curent așa cum este stocat în VCS (fără parametrul format) sau convertit într-un alt format (a se vedea Descărcarea traducerilor).

Notă

Acest endpoint API utilizează o logică diferită pentru ieșire față de restul API-ului, deoarece operează pe întregul fișier și nu pe date. Setul de parametri format acceptați diferă și fără un astfel de parametru se obține fișierul de traducere așa cum este stocat în VCS.

Parametrii de interogare
  • format – Formatul de fișier care urmează să fie utilizat; dacă nu este specificat, nu are loc nicio conversie de format; formate de fișier acceptate: po, mo, xliff, xliff11, tbx, csv, xlsx, json, aresource, strings

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

  • language (string) – Codul limbii de traducere

POST /api/translations/(string: project)/(string: component)/(string: language)/file/

Încărcați un nou fișier cu traduceri.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

  • language (string) – Codul limbii de traducere

Parametrii formularului
  • string conflict – Cum se tratează conflictele (ignore, replace-translated sau replace-approved)

  • file file – Fișier încărcat

  • string email – E-mail de autor

  • string author – Numele autorului

  • string method – Metoda de încărcare (translate, approve, suggest, fuzzy, replace, source, add), vezi Metode de import

  • string fuzzy – Procesarea șirurilor fuzzy (marcate pentru editare) (empty, process, approve)

Exemplu CURL:

curl -X POST \
    -F file=@strings.xml \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/translations/hello/android/cs/file/
GET /api/translations/(string: project)/(string: component)/(string: language)/repository/

Returnează informații despre starea depozitului VCS.

Răspunsul este același ca pentru GET /api/components/(string:project)/(string:component)/repository/.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

  • language (string) – Codul limbii de traducere

POST /api/translations/(string: project)/(string: component)/(string: language)/repository/

Efectuează operațiunea dată asupra depozitului VCS.

Consultați POST /api/projects/(string:project)/repository/ pentru documentație.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

  • language (string) – Codul limbii de traducere

Obiect JSON de cerere
  • operation (string) – Operațiunea de efectuat: una dintre push, pull, commit, reset, cleanup

Obiect JSON de răspuns
  • result (boolean) – rezultatul operațiunii

GET /api/translations/(string: project)/(string: component)/(string: language)/statistics/

Returnează statistici detaliate privind traducerile.

Nou în versiunea 2.7.

Parametrii
  • project (string) – Lipsă URL a proiectului

  • component (string) – Componenta URL slug

  • language (string) – Codul limbii de traducere

Obiect JSON de răspuns
  • code (string) – codul limbii

  • failing (int) – numărul de controale nereușite

  • failing_percent (float) – procentul de controale nereușite

  • fuzzy (int) – numărul de șiruri fuzzy (marcate pentru editare)

  • fuzzy_percent (float) – procentajul de șiruri fuzzy (marcate pentru editare)

  • total_words (int) – numărul total de cuvinte

  • translated_words (int) – numărul de cuvinte traduse

  • last_author (string) – numele ultimului autor

  • last_change (timestamp) – data ultimei modificări

  • name (string) – numele limbii

  • total (int) – numărul total de șiruri de caractere

  • translated (int) – numărul de șiruri de caractere traduse

  • translated_percent (float) – procentul de șiruri de caractere traduse

  • url (string) – URL pentru a accesa traducerea (URL de angajament)

  • url_translate (string) – URL pentru a accesa traducerea (URL-ul real al traducerii)

Unități

O unitate este o singură bucată dintr-o traducere care asociază un șir sursă cu un șir tradus corespunzător și conține, de asemenea, unele metadate aferente. Termenul este derivat din Translate Toolkit și XLIFF.

Nou în versiunea 2.10.

GET /api/units/

Returnează o listă de unități de traducere.

Vezi și

Atributele obiectului unitate sunt documentate la GET /api/units/(int:id)/.

GET /api/units/(int: id)/

Schimbat în versiunea 4.3: target și source sunt acum array-uri pentru a gestiona corect șirurile de caractere la plural.

Returnează informații despre unitatea de traducere.

Parametrii
  • id (int) – ID-ul unității

Obiect JSON de răspuns
  • translation (string) – Adresa URL a unui obiect de traducere asociat

  • source (array) – șirul sursă

  • previous_source (string) – șirul sursă anterior utilizat pentru potrivirea fuzzy

  • target (array) – șirul țintă

  • id_hash (string) – identificatorul unic al unității

  • content_hash (string) – identificatorul unic al șirului sursă

  • location (string) – locația unității în codul sursă

  • context (string) – contextul unității de traducere

  • note (string) – nota unității de conversie

  • flags (string) – indicatori de unitate pentru traducere

  • state (int) – starea unității, 0 - netradus, 10 - necesită editare, 20 - tradus, 30 - aprobat, 100 - numai pentru citire

  • fuzzy (boolean) – dacă unitatea este neclară sau marcată pentru revizuire

  • translated (boolean) – dacă unitatea este tradusă

  • approved (boolean) – dacă traducerea este aprobată

  • position (int) – poziția unității în fișierul de traducere

  • has_suggestion (boolean) – dacă unitatea are sugestii

  • has_comment (boolean) – dacă unitatea are observații

  • has_failing_check (boolean) – dacă unitatea are verificări defectuoase

  • num_words (int) – numărul de cuvinte sursă

  • priority (int) – prioritate de traducere; 100 este valoarea implicită

  • id (int) – identificatorul unității

  • explanation (string) – Explicație în șiruri, disponibilă pe unitățile sursă, a se vedea Informații suplimentare despre șirurile sursă

  • extra_flags (string) – Stegulețe de șir suplimentare, disponibile pe unitățile sursă, a se vedea Personalizarea comportamentului cu ajutorul stegulețelor

  • web_url (string) – URL-ul unde poate fi editată unitatea

  • souce_unit (string) – Legătura cu unitatea sursă; a se vedea GET /api/units/(int:id)/

PATCH /api/units/(int: id)/

Nou în versiunea 4.3.

Efectuează o actualizare parțială a unității de traducere.

Parametrii
  • id (int) – ID-ul unității

Obiect JSON de cerere
PUT /api/units/(int: id)/

Nou în versiunea 4.3.

Efectuează o actualizare completă a unității de traducere.

Parametrii
  • id (int) – ID-ul unității

Obiect JSON de cerere
DELETE /api/units/(int: id)/

Nou în versiunea 4.3.

Șterge o unitate de traducere.

Parametrii
  • id (int) – ID-ul unității

Modificări

Nou în versiunea 2.10.

GET /api/changes/

Schimbat în versiunea 4.1: Filtrarea modificărilor a fost introdusă în versiunea 4.1.

Returnează o listă de modificări de traducere.

Vezi și

Atributele obiectelor de modificare sunt documentate la GET /api/changes/(int:id)/.

Parametrii de interogare
  • user (string) – Numele de utilizator al utilizatorului pentru filtre

  • action (int) – Acțiune de filtrare, poate fi utilizată de mai multe ori

  • timestamp_after (timestamp) – Ștampila de timp în format ISO 8601 pentru a enumera modificările după

  • timestamp_before (timestamp) – Ștampila de timp în format ISO 8601 pentru a enumera modificările după

GET /api/changes/(int: id)/

Returnează informații despre modificarea traducerii.

Parametrii
  • id (int) – Schimbă ID-ul

Obiect JSON de răspuns
  • unit (string) – Adresa URL a unui obiect unitate conex

  • translation (string) – Adresa URL a unui obiect de traducere asociat

  • component (string) – Adresa URL a unui obiect component conex

  • user (string) – Adresa URL a unui obiect utilizator asociat

  • author (string) – URL-ul unui obiect de autor asociat

  • timestamp (timestamp) – marca temporală a evenimentului

  • action (int) – identificarea numerică a acțiunii

  • action_name (string) – descrierea textului acțiunii

  • target (string) – evenimentul a modificat textul sau detaliul

  • id (int) – identificator de modificare

Capturi de ecran

Nou în versiunea 2.14.

GET /api/screenshots/

Returnează o listă de informații despre șirurile de caractere ale capturilor de ecran.

Vezi și

Atributele obiectului Screenshot sunt documentate la GET /api/screenshots/(int:id)/.

GET /api/screenshots/(int: id)/

Returnează informații despre informațiile de captură de ecran.

Parametrii
  • id (int) – ID captură de ecran

Obiect JSON de răspuns
  • name (string) – numele unei capturi de ecran

  • component (string) – Adresa URL a unui obiect component conex

  • file_url (string) – URL pentru a descărca un fișier; a se vedea GET /api/screenshots/(int:id)/file/

  • units (array) – link către informațiile asociate șirului sursă; a se vedea GET /api/units/(int:id)/

GET /api/screenshots/(int: id)/file/

Descărcați imaginea capturii de ecran.

Parametrii
  • id (int) – ID captură de ecran

POST /api/screenshots/(int: id)/file/

Înlocuiți imaginea capturii de ecran.

Parametrii
  • id (int) – ID captură de ecran

Parametrii formularului
  • file image – Fișier încărcat

Exemplu CURL:

curl -X POST \
    -F image=@image.png \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/screenshots/1/file/
POST /api/screenshots/(int: id)/units/

Asociază șirul sursă cu captura de ecran.

Parametrii
  • id (int) – ID captură de ecran

Parametrii formularului
  • string unit_id – ID-ul unității

Obiect JSON de răspuns
  • name (string) – numele unei capturi de ecran

  • translation (string) – Adresa URL a unui obiect de traducere asociat

  • file_url (string) – URL pentru a descărca un fișier; a se vedea GET /api/screenshots/(int:id)/file/

  • units (array) – link către informațiile asociate șirului sursă; a se vedea GET /api/units/(int:id)/

DELETE /api/screenshots/(int: id)/units/(int: unit_id)

Eliminați asocierea șirului sursă cu captura de ecran.

Parametrii
  • id (int) – ID captură de ecran

  • unit_id – ID-ul unității șirului sursă

POST /api/screenshots/

Creează o nouă captură de ecran.

Parametrii formularului
  • file image – Fișier încărcat

  • string name – Numele capturii de ecran

  • string project_slug – Limbajul proiectului

  • string component_slug – Componenta slug

  • string language_code – Codul limbii

Obiect JSON de răspuns
  • name (string) – numele unei capturi de ecran

  • component (string) – Adresa URL a unui obiect component conex

  • file_url (string) – URL pentru a descărca un fișier; a se vedea GET /api/screenshots/(int:id)/file/

  • units (array) – link către informațiile asociate șirului sursă; a se vedea GET /api/units/(int:id)/

PATCH /api/screenshots/(int: id)/

Editați informații parțiale despre captura de ecran.

Parametrii
  • id (int) – ID captură de ecran

Obiect JSON de răspuns
  • name (string) – numele unei capturi de ecran

  • component (string) – Adresa URL a unui obiect component conex

  • file_url (string) – URL pentru a descărca un fișier; a se vedea GET /api/screenshots/(int:id)/file/

  • units (array) – link către informațiile asociate șirului sursă; a se vedea GET /api/units/(int:id)/

PUT /api/screenshots/(int: id)/

Editați informațiile complete despre captura de ecran.

Parametrii
  • id (int) – ID captură de ecran

Obiect JSON de răspuns
  • name (string) – numele unei capturi de ecran

  • component (string) – Adresa URL a unui obiect component conex

  • file_url (string) – URL pentru a descărca un fișier; a se vedea GET /api/screenshots/(int:id)/file/

  • units (array) – link către informațiile asociate șirului sursă; a se vedea GET /api/units/(int:id)/

DELETE /api/screenshots/(int: id)/

Ștergeți captura de ecran.

Parametrii
  • id (int) – ID captură de ecran

Extensii

Nou în versiunea 4.4.1.

GET /api/addons/

Returnează o listă de addon-uri.

Vezi și

Atributele obiectelor add-on sunt documentate la GET /api/addons/(int:id)/.

GET /api/addons/(int: id)/

Returnează informații despre informațiile despre addon.

Parametrii
  • id (int) – ID add-on

Obiect JSON de răspuns
  • name (string) – numele unui addon

  • component (string) – Adresa URL a unui obiect component conex

  • configuration (object) – Configurație addon opțională

Vezi și

Extensii

POST /api/components/(string: project)/(string: component)/addons/

Creează un nou addon.

Parametrii
  • project_slug (string) – Limbajul proiectului

  • component_slug (string) – Componenta slug

Obiect JSON de cerere
  • name (string) – numele unui addon

  • configuration (object) – Configurație addon opțională

PATCH /api/addons/(int: id)/

Editați informații parțiale despre addon.

Parametrii
  • id (int) – ID add-on

Obiect JSON de răspuns
  • configuration (object) – Configurație addon opțională

PUT /api/addons/(int: id)/

Editați informațiile complete despre addon.

Parametrii
  • id (int) – ID add-on

Obiect JSON de răspuns
  • configuration (object) – Configurație addon opțională

DELETE /api/addons/(int: id)/

Șterge addon.

Parametrii
  • id (int) – ID add-on

Liste de componente

Nou în versiunea 4.0.

GET /api/component-lists/

Returnează o listă de liste de componente.

Vezi și

Atributele obiectelor listelor de componente sunt documentate la GET /api/component-lists/(str:slug)/.

GET /api/component-lists/(str: slug)/

Returnează informații despre lista de componente.

Parametrii
  • slug (string) – Lipsă în lista de componente

Obiect JSON de răspuns
  • name (string) – numele unei liste de componente

  • slug (string) – sloganul unei liste de componente

  • show_dashboard (boolean) – dacă se afișează pe un tablou de bord

  • components (array) – link către componentele asociate; a se vedea GET /api/components/(string:project)/(string:component)/

  • auto_assign (array) – reguli de atribuire automată

PUT /api/component-lists/(str: slug)/

Modifică parametrii listei de componente.

Parametrii
  • slug (string) – Lipsă în lista de componente

Obiect JSON de cerere
  • name (string) – numele unei liste de componente

  • slug (string) – sloganul unei liste de componente

  • show_dashboard (boolean) – dacă se afișează pe un tablou de bord

PATCH /api/component-lists/(str: slug)/

Modifică parametrii listei de componente.

Parametrii
  • slug (string) – Lipsă în lista de componente

Obiect JSON de cerere
  • name (string) – numele unei liste de componente

  • slug (string) – sloganul unei liste de componente

  • show_dashboard (boolean) – dacă se afișează pe un tablou de bord

DELETE /api/component-lists/(str: slug)/

Șterge lista de componente.

Parametrii
  • slug (string) – Lipsă în lista de componente

POST /api/component-lists/(str: slug)/components/

Se asociază componenta cu o listă de componente.

Parametrii
  • slug (string) – Lipsă în lista de componente

Parametrii formularului
  • string component_id – ID-ul componentei

DELETE /api/component-lists/(str: slug)/components/(str: component_slug)

Disociază o componentă din lista de componente.

Parametrii
  • slug (string) – Lipsă în lista de componente

  • component_slug (string) – Componenta slug

Glosar

Schimbat în versiunea 4.5: Glosarele sunt acum stocate ca și componente obișnuite, traduceri și șiruri de caractere, vă rugăm să utilizați în schimb API-ul respectiv.

Sarcini

Nou în versiunea 4.4.

GET /api/tasks/

Lista de sarcini nu este disponibilă în prezent.

GET /api/tasks/(str: uuid)/

Returnează informații despre o sarcină

Parametrii
  • uuid (string) – UUID al task-ului

Obiect JSON de răspuns
  • completed (boolean) – Dacă task-ul a fost finalizat

  • progress (int) – Progresul task-ului în procente

  • result (object) – Rezultatul sarcinii sau detalii privind progresul

  • log (string) – Jurnal de sarcini

Metrici

GET /api/metrics/

Returnează parametrii serverului.

Obiect JSON de răspuns
  • units (int) – Număr de unități

  • units_translated (int) – Numărul de unități traduse

  • users (int) – Număr de utilizatori

  • changes (int) – Numărul de modificări

  • projects (int) – Numărul de proiecte

  • components" (int) – Numărul de componente

  • translations" (int) – Numărul de traduceri

  • languages" (int) – Numărul de limbi utilizate

  • checks" (int) – Numărul de controale de calitate declanșate

  • configuration_errors" (int) – Numărul de erori de configurare

  • suggestions" (int) – Numărul de sugestii în așteptare

  • celery_queues (object) – Lungimi ale cozilor de așteptare Celery, vezi Sarcini de fundal folosind Celery

  • name (string) – Numele serverului configurat

Cârlige de notificare

Cârligele de notificare permit aplicațiilor externe să notifice Weblate că depozitul VCS a fost actualizat.

Puteți utiliza punctele finale ale depozitelor pentru proiecte, componente și traduceri pentru a actualiza depozitele individuale; consultați POST /api/projects/(string:project)/repository/ pentru documentație.

GET /hooks/update/(string: project)/(string: component)/

Învechit începând cu versiunea 2.6: Vă rugăm să folosiți în schimb POST /api/components/(string:project)/(string:component)/repository/, care funcționează corect cu autentificare pentru proiectele limitate de ACL.

Declanșează actualizarea unei componente (extragerea din VCS și scanarea pentru modificări de traducere).

GET /hooks/update/(string: project)/

Învechit începând cu versiunea 2.6: Vă rugăm să folosiți în schimb POST /api/projects/(string:project)/repository/, care funcționează corect cu autentificare pentru proiectele limitate de ACL.

Declanșează actualizarea tuturor componentelor unui proiect (extragerea din VCS și scanarea pentru modificări de traducere).

POST /hooks/github/

Cârlig special pentru gestionarea notificărilor GitHub și actualizarea automată a componentelor corespunzătoare.

Notă

GitHub include suport direct pentru notificarea Weblate: activați cârligul serviciului Weblate în setările depozitului și setați URL-ul la URL-ul instalației Weblate.

Vezi și

Primirea automată a modificărilor de pe GitHub

Pentru instrucțiuni privind configurarea integrării GitHub

https://docs.github.com/en/github/extending-github/about-webhooks

Informații generice despre GitHub Webhooks

ENABLE_HOOKS

Pentru a activa cârlige pentru întregul Weblate

POST /hooks/gitlab/

Cârlig special pentru gestionarea notificărilor GitLab și actualizarea automată a componentelor corespunzătoare.

Vezi și

Primirea automată a modificărilor de la GitLab

Pentru instrucțiuni privind configurarea integrării GitLab

https://docs.gitlab.com/ee/user/project/integrations/webhooks.html

Informații generice despre GitLab Webhooks

ENABLE_HOOKS

Pentru a activa cârlige pentru întregul Weblate

POST /hooks/bitbucket/

Hook special pentru gestionarea notificărilor Bitbucket și actualizarea automată a componentelor corespunzătoare.

Vezi și

Primirea automată a modificărilor de la Bitbucket

Pentru instrucțiuni privind configurarea integrării Bitbucket

https://support.atlassian.com/bitbucket-cloud/docs/manage-webhooks/

Informații generice despre Bitbucket Webhooks

ENABLE_HOOKS

Pentru a activa cârlige pentru întregul Weblate

POST /hooks/pagure/

Nou în versiunea 3.3.

Hook special pentru gestionarea notificărilor Pagure și actualizarea automată a componentelor corespunzătoare.

Vezi și

Primirea automată a modificărilor de la Pagure

Pentru instrucțiuni privind configurarea integrării Pagure

https://docs.pagure.org/pagure/usage/using_webhooks.html

Informații generice despre Pagure Webhooks

ENABLE_HOOKS

Pentru a activa cârlige pentru întregul Weblate

POST /hooks/azure/

Nou în versiunea 3.8.

Hook special pentru gestionarea notificărilor Azure Repos și actualizarea automată a componentelor corespunzătoare.

Vezi și

Primirea automată a modificărilor din Azure Repos

Pentru instrucțiuni privind configurarea integrării Azure

https://docs.microsoft.com/en-us/azure/devops/service-hooks/services/webhooks?view=azure-devops

Informații generice despre Azure Repos Web Hooks

ENABLE_HOOKS

Pentru a activa cârlige pentru întregul Weblate

POST /hooks/gitea/

Nou în versiunea 3.9.

Hook special pentru gestionarea notificărilor Gitea Webhook și actualizarea automată a componentelor corespunzătoare.

Vezi și

Primirea automată a modificărilor din Gitea Repos

Pentru instrucțiuni privind configurarea integrării Gitea

https://docs.gitea.io/en-us/webhooks/

Informații generice despre Gitea Webhooks

ENABLE_HOOKS

Pentru a activa cârlige pentru întregul Weblate

POST /hooks/gitee/

Nou în versiunea 3.9.

Hook special pentru gestionarea notificărilor Gitee Webhook și actualizarea automată a componentelor corespunzătoare.

Vezi și

Primirea automată a modificărilor din Gitee Repos

Pentru instrucțiuni privind configurarea integrării Gitee

https://gitee.com/help/categories/40

Informații generice despre Gitee Webhooks

ENABLE_HOOKS

Pentru a activa cârlige pentru întregul Weblate

Exporturi

Weblate oferă diverse exporturi pentru a vă permite să prelucrați în continuare datele.

GET /exports/stats/(string: project)/(string: component)/
Parametrii de interogare
  • format (string) – Format de ieșire: fie json, sau csv

Învechit începând cu versiunea 2.6: Vă rugăm să utilizați în schimb GET /api/components/(string:project)/(string:component)/statistics/ și GET /api/translations/(string:project)/(string:component)/(string:language)/statistics/; aceasta permite accesul și la proiectele controlate prin ACL.

Obține statistici pentru componenta dată, în formatul dat.

Exemplu de cerere:

GET /exports/stats/weblate/main/ HTTP/1.1
Host: example.com
Accept: application/json, text/javascript

Exemplu de răspuns:

HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json

[
    {
        "code": "cs",
        "failing": 0,
        "failing_percent": 0.0,
        "fuzzy": 0,
        "fuzzy_percent": 0.0,
        "last_author": "Michal Čihař",
        "last_change": "2012-03-28T15:07:38+00:00",
        "name": "Czech",
        "total": 436,
        "total_words": 15271,
        "translated": 436,
        "translated_percent": 100.0,
        "translated_words": 3201,
        "url": "http://hosted.weblate.org/engage/weblate/cs/",
        "url_translate": "http://hosted.weblate.org/projects/weblate/main/cs/"
    },
    {
        "code": "nl",
        "failing": 21,
        "failing_percent": 4.8,
        "fuzzy": 11,
        "fuzzy_percent": 2.5,
        "last_author": null,
        "last_change": null,
        "name": "Dutch",
        "total": 436,
        "total_words": 15271,
        "translated": 319,
        "translated_percent": 73.2,
        "translated_words": 3201,
        "url": "http://hosted.weblate.org/engage/weblate/nl/",
        "url_translate": "http://hosted.weblate.org/projects/weblate/main/nl/"
    },
    {
        "code": "el",
        "failing": 11,
        "failing_percent": 2.5,
        "fuzzy": 21,
        "fuzzy_percent": 4.8,
        "last_author": null,
        "last_change": null,
        "name": "Greek",
        "total": 436,
        "total_words": 15271,
        "translated": 312,
        "translated_percent": 71.6,
        "translated_words": 3201,
        "url": "http://hosted.weblate.org/engage/weblate/el/",
        "url_translate": "http://hosted.weblate.org/projects/weblate/main/el/"
    }
]

Fluxuri RSS

Modificările în traduceri sunt exportate în fluxuri RSS.

GET /exports/rss/(string: project)/(string: component)/(string: language)/

Obține fluxul RSS cu modificările recente pentru o traducere.

GET /exports/rss/(string: project)/(string: component)/

Obține fluxul RSS cu modificările recente pentru o traducere.

GET /exports/rss/(string: project)/

Obține fluxul RSS cu modificările recente pentru un proiect.

GET /exports/rss/language/(string: language)/

Obține un flux RSS cu modificările recente pentru o limbă.

GET /exports/rss/

Obține fluxul RSS cu modificările recente pentru instanța Weblate.

Client Weblate

Nou în versiunea 2.7: A existat un suport complet pentru utilitarul wlc încă de la Weblate 2.7. Dacă folosiți o versiune mai veche, pot apărea unele incompatibilități cu API-ul.

Instalare

Weblate Client este livrat separat și include modulul Python. Pentru a utiliza comenzile de mai jos, trebuie să instalați wlc:

pip3 install wlc

Utilizarea Docker

Clientul Weblate este, de asemenea, disponibil ca o imagine Docker.

Imaginea este publicată pe Docker Hub: https://hub.docker.com/r/weblate/wlc

Instalare:

docker pull weblate/wlc

Containerul Docker utilizează setările implicite ale Weblate și se conectează la API-ul implementat în localhost. URL-ul API și API_KEY pot fi configurate prin intermediul argumentelor acceptate de Weblate.

Comanda de lansare a containerului utilizează următoarea sintaxă:

docker run --rm weblate/wlc [WLC_ARGS]

Exemplu:

docker run --rm weblate/wlc --url https://hosted.weblate.org/api/ list-projects

S-ar putea să doriți să treceți Fișiere de configurare la containerul Docker, cea mai simplă abordare este să adăugați directorul curent ca volum /home/weblate:

docker run --volume $PWD:/home/weblate --rm weblate/wlc show

Noțiuni introductive

Configurația wlc este stocată în ~/.config/weblate (vezi Fișiere de configurare pentru alte locații), vă rugăm să o creați pentru a se potrivi cu mediul dumneavoastră:

[weblate]
url = https://hosted.weblate.org/api/

[keys]
https://hosted.weblate.org/api/ = APIKEY

Apoi puteți invoca comenzi pe serverul implicit:

wlc ls
wlc commit sandbox/hello-world

Sinopsis

wlc [arguments] <command> [options]

Comenzile indică de fapt ce operațiune trebuie efectuată.

Descriere

Weblate Client este o bibliotecă Python și un utilitar de linie de comandă pentru a gestiona Weblate de la distanță folosind Weblate’s REST API. Utilitarul de linie de comandă poate fi invocat ca wlc și este încorporat în wlc.

Argumente

Programul acceptă următoarele argumente care definesc formatul de ieșire sau instanța Weblate care trebuie utilizată. Acestea trebuie introduse înainte de orice comandă.

--format {csv,json,text,html}

Specificați formatul de ieșire.

--url URL

Specificați URL-ul API. Suprascrie orice valoare găsită în fișierul de configurare, a se vedea Fișiere de configurare. URL-ul trebuie să se termine cu /api/, de exemplu https://hosted.weblate.org/api/.

--key KEY

Specificați cheia de utilizator API care urmează să fie utilizată. Suprascrie orice valoare găsită în fișierul de configurare, a se vedea Fișiere de configurare. Puteți găsi cheia dvs. în profilul vostru pe Weblate.

--config PATH

Suprascrie calea fișierului de configurare, a se vedea Fișiere de configurare.

--config-section SECTION

Suprascrie secțiunea fișierului de configurare în uz, a se vedea Fișiere de configurare.

Comenzi

Sunt disponibile următoarele comenzi:

version

Tipărește versiunea curentă.

list-languages

Listează limbile utilizate în Weblate.

list-projects

Listează proiectele din Weblate.

list-components

Listează componentele din Weblate.

list-translations

Listează traducerile din Weblate.

show

Afișează obiectul Weblate (traducere, componentă sau proiect).

ls

Listează obiectul Weblate (traducere, componentă sau proiect).

commit

Comută modificările efectuate într-un obiect Weblate (traducere, componentă sau proiect).

pull

Atrage modificările din depozitul de la distanță în obiectul Weblate (traducere, componentă sau proiect).

push

Împinge modificările obiectelor Weblate în depozitul la distanță (traducere, componentă sau proiect).

reset

Nou în versiunea 0.7: Compatibil începând cu wlc 0.7.

Resetează modificările din obiectul Weblate pentru a se potrivi cu depozitul la distanță (traducere, componentă sau proiect).

cleanup

Nou în versiunea 0.9: Compatibil începând cu wlc 0.9.

Îndepărtează orice modificări netrasate într-un obiect Weblate pentru a se potrivi cu depozitul la distanță (traducere, componentă sau proiect).

repo

Afișează starea depozitului pentru un anumit obiect Weblate (traducere, componentă sau proiect).

statistics

Afișează statistici detaliate pentru un anumit obiect Weblate (traducere, componentă sau proiect).

lock-status

Nou în versiunea 0.5: Suportat de la wlc 0.5.

Afișează starea de blocare.

lock

Nou în versiunea 0.5: Suportat de la wlc 0.5.

Blochează componenta de la traducerea ulterioară în Weblate.

unlock

Nou în versiunea 0.5: Suportat de la wlc 0.5.

Deblochează traducerea componentei Weblate.

changes

Nou în versiunea 0.7: Compatibil începând cu wlc 0.7 și Weblate 2.10.

Afișează modificările pentru un anumit obiect.

download

Nou în versiunea 0.7: Compatibil începând cu wlc 0.7.

Descarcă un fișier de traducere.

--convert

Convertește formatul fișierului; dacă nu este specificat, nu are loc nicio conversie pe server, iar fișierul este descărcat ca atare în depozit.

--output

Specifică fișierul în care se salvează ieșirea; dacă nu este specificat, aceasta este imprimată în stdout.

upload

Nou în versiunea 0.9: Compatibil începând cu wlc 0.9.

Încarcă un fișier de traducere.

--overwrite

Suprascrieți traducerile existente în momentul încărcării.

--input

Fișier din care se citește conținutul; dacă nu este specificat, se citește din stdin.

Sugestie

Puteți obține informații mai detaliate despre invocarea comenzilor individuale trecând --help, de exemplu: wlc ls --help.

Fișiere de configurare

.weblate, .weblate.ini, weblate.ini

Schimbat în versiunea 1.6: Sunt acceptate și fișierele cu extensia .ini.

Fișier de configurare pentru fiecare proiect

C:\Users\NAME\AppData\weblate.ini

Nou în versiunea 1.6.

Fișier de configurare a utilizatorului pe Windows.

~/.config/weblate

Fișier de configurare a utilizatorului

/etc/xdg/weblate

Fișier de configurare la nivel de sistem

Programul urmează specificațiile XDG, astfel încât puteți ajusta plasarea fișierelor de configurare prin variabilele de mediu XDG_CONFIG_HOME sau XDG_CONFIG_DIRS. Pe Windows, directorul APPDATA este locația preferată pentru fișierul de configurare.

Următoarele setări pot fi configurate în secțiunea [weblate] (puteți personaliza acest lucru prin --config-section):

key

API KEY pentru a accesa Weblate.

url

URL-ul serverului API, valoarea implicită este http://127.0.0.1:8000/api/.

translation

Calea către traducerea implicită - componentă sau proiect.

Fișierul de configurare este un fișier INI, de exemplu:

[weblate]
url = https://hosted.weblate.org/api/
key = APIKEY
translation = weblate/application

În plus, cheile API pot fi stocate în secțiunea [keys]:

[keys]
https://hosted.weblate.org/api/ = APIKEY

Acest lucru vă permite să stocați cheile în setările personale, utilizând în același timp configurația .weblate din depozitul VCS, astfel încât wlc să știe cu ce server trebuie să vorbească.

Exemple

Imprimă versiunea curentă a programului:

$ wlc version
version: 0.1

Enumerați toate proiectele:

$ wlc list-projects
name: Hello
slug: hello
url: http://example.com/api/projects/hello/
web: https://weblate.org/
web_url: http://example.com/projects/hello/

Puteți, de asemenea, să desemnați la ce proiect ar trebui să lucreze wlc:

$ cat .weblate
[weblate]
url = https://hosted.weblate.org/api/
translation = weblate/application

$ wlc show
branch: main
file_format: po
source_language: en
filemask: weblate/locale/*/LC_MESSAGES/django.po
git_export: https://hosted.weblate.org/git/weblate/application/
license: GPL-3.0+
license_url: https://spdx.org/licenses/GPL-3.0+
name: Application
new_base: weblate/locale/django.pot
project: weblate
repo: git://github.com/WeblateOrg/weblate.git
slug: application
template:
url: https://hosted.weblate.org/api/components/weblate/application/
vcs: git
web_url: https://hosted.weblate.org/projects/weblate/application/

Cu această configurație, este ușor să confirmați modificările în așteptare în proiectul curent:

$ wlc commit

API-ul Python al Weblate

Instalare

The Python API is shipped separately, you need to install the Client Weblate (wlc) to have it.

pip install wlc

wlc

Excepție de întârziere

exception wlc.WeblateException

Clasa de bază pentru toate excepțiile.

Weblate

class wlc.Weblate(key='', url=None, config=None)
Parametrii
  • key (str) – Cheie de utilizator

  • url (str) – URL-ul serverului API, dacă nu este specificat, se utilizează valoarea implicită

  • config (wlc.config.WeblateConfig) – Obiect de configurare, înlocuiește orice alt parametru.

Clasa de acces la API, definește cheia API și, opțional, URL-ul API.

get(path)
Parametrii

path (str) – Calea de solicitare

Tipul întors

object

Efectuează un singur apel API GET.

post(path, **kwargs)
Parametrii

path (str) – Calea de solicitare

Tipul întors

object

Efectuează un singur apel API GET.

wlc.config

WeblateConfig

class wlc.config.WeblateConfig(section='wlc')
Parametrii

section (str) – Secțiunea de configurare de utilizat

Analizator de fișiere de configurare în conformitate cu specificațiile XDG.

load(path=None)
Parametrii

path (str) – Calea de acces din care se încarcă configurația.

Încarcă configurația dintr-un fișier, dacă nu este specificat niciunul, se încarcă din fișierul de configurare wlc (~/.config/wlc) plasat în calea de configurare XDG (/etc/xdg/wlc).

wlc.main

wlc.main.main(settings=None, stdout=None, args=None)
Parametrii
  • settings (list) – Setări de suprascris ca listă de tupluri

  • stdout (object) – obiect de fișier stdout pentru imprimarea ieșirii, utilizează sys.stdout ca valoare implicită

  • args (list) – Argumente din linia de comandă pentru procesare, utilizează sys.args ca valoare implicită

Punct principal de intrare pentru interfața de linie de comandă.

@wlc.main.register_command(command)

Decorator pentru a înregistra clasa Command în parserul principal utilizat de main().

Command

class wlc.main.Command(args, config, stdout=None)

Clasa principală pentru invocarea comenzilor.

Instrucțiuni de configurare

Instalarea Weblate

Instalarea folosind Docker

Cu implementarea Weblate dockerizată puteți obține instanța personală Weblate în câteva secunde. Toate dependențele Weblate sunt deja incluse. PostgreSQL este configurat ca bază de date implicită.

Cerințe hardware

Weblate ar trebui să ruleze fără probleme pe orice hardware contemporan, următoarea este configurația minimă necesară pentru a rula Weblate pe o singură gazdă (Weblate, baza de date și serverul web):

  • 2 GB de RAM

  • 2 nuclee CPU

  • 1 GB de spațiu de stocare

Cu cât mai multă memorie, cu atât mai bine - aceasta este utilizată pentru memoria cache la toate nivelurile (sistem de fișiere, bază de date și Weblate).

Un număr mare de utilizatori simultani crește numărul de nuclee CPU necesare. Pentru sute de componente de traducere se recomandă cel puțin 4 GB de memorie RAM.

Utilizarea obișnuită a bazei de date este de aproximativ 300 MB pentru 1 milion de cuvinte găzduite. Spațiul de stocare necesar pentru depozitele clonate variază, dar Weblate încearcă să mențină dimensiunea acestora la un nivel minim prin clonarea superficială.

Notă

Cerințele reale pentru instalarea Weblate variază foarte mult în funcție de dimensiunea traducerilor gestionate în cadrul acesteia.

Instalare

Următoarele exemple presupun că aveți un mediu Docker funcțional, cu docker-compose instalat. Vă rugăm să consultați documentația Docker pentru instrucțiuni.

  1. Clonați repo-ul weblate-docker:

    git clone https://github.com/WeblateOrg/docker-compose.git weblate-docker
    cd weblate-docker
    
  2. Creați un fișier docker-compose.override.yml cu setările dumneavoastră. Consultați Variabile de mediu Docker pentru lista completă a variabilelor de mediu.

    version: '3'
    services:
      weblate:
        ports:
          - 80:8080
        environment:
          WEBLATE_EMAIL_HOST: smtp.example.com
          WEBLATE_EMAIL_HOST_USER: user
          WEBLATE_EMAIL_HOST_PASSWORD: pass
          WEBLATE_SERVER_EMAIL: weblate@example.com
          WEBLATE_DEFAULT_FROM_EMAIL: weblate@example.com
          WEBLATE_SITE_DOMAIN: weblate.example.com
          WEBLATE_ADMIN_PASSWORD: password for the admin user
          WEBLATE_ADMIN_EMAIL: weblate.admin@example.com
    

    Notă

    Dacă WEBLATE_ADMIN_PASSWORD nu este setat, utilizatorul administrator este creat cu o parolă aleatorie afișată la prima pornire.

    Exemplul furnizat face ca Weblate să asculte pe portul 80, editați maparea porturilor în fișierul docker-compose.override.yml pentru a o modifica.

  3. Porniți containerele Weblate:

    docker-compose up
    

Bucurați-vă de implementarea Weblate, acesta este accesibil pe portul 80 al containerului weblate.

Schimbat în versiunea 2.15-2: Configurația s-a schimbat recent, anterior a existat un container separat pentru serverul web, de la 2.15-2 serverul web este încorporat în containerul Weblate.

Schimbat în versiunea 3.7.1-6: În iulie 2019 (începând cu eticheta 3.7.1-6), containerele nu rulează ca utilizator root. Acest lucru a schimbat portul expus de la 80 la 8080.

Alegerea tag-ului hub-ului Docker

Puteți utiliza următoarele etichete în hub-ul Docker, consultați https://hub.docker.com/r/weblate/weblate/tags/ pentru lista completă a celor disponibile.

Denumirea etichetei

Descriere

Caz de utilizare

latest

Weblate versiune stabilă, se potrivește cu cea mai recentă versiune etichetată

Actualizări continue într-un mediu de producție

<VERSION>-<PATCH>

Weblate versiune stabilă

Implementare bine definită într-un mediu de producție

edge

Versiune stabilă Weblate cu modificări de dezvoltare în containerul Docker (de exemplu, dependențe actualizate)

Rularea actualizărilor într-un mediu de pregătire

edge-<DATE>-<SHA>

Versiune stabilă Weblate cu modificări de dezvoltare în containerul Docker (de exemplu, dependențe actualizate)

Implementare bine definită într-un mediu de staționare

bleeding

Versiunea de dezvoltare Weblate din Git

Actualizări de rulare pentru a testa viitoarele caracteristici Weblate

bleeding-<DATE>-<SHA>

Versiunea de dezvoltare Weblate din Git

Implementare bine definită pentru a testa viitoarele caracteristici Weblate

Fiecare imagine este testată de către CI înainte de a fi publicată, astfel încât chiar și versiunea „sângerândă” ar trebui să fie destul de sigură pentru utilizare.

Container Docker cu suport HTTPS

Vă rugăm să consultați Instalare pentru instrucțiuni generice de implementare, această secțiune menționează doar diferențele față de aceasta.

Utilizarea certificatelor SSL proprii

Nou în versiunea 3.8-3.

În cazul în care aveți propriul certificat SSL pe care doriți să îl utilizați, plasați pur și simplu fișierele în volumul de date Weblate (a se vedea Volumele containerelor Docker):

  • ssl/fullchain.pem care conține certificatul, inclusiv toate certificatele CA necesare

  • ssl/privkey.pem conținând cheia privată

Ambele fișiere trebuie să fie deținute de același utilizator ca și cel care pornește containerul docker și să aibă masca de fișier setată la 600 (poate fi citită și scrisă numai de către utilizatorul proprietar).

În plus, containerul Weblate va accepta acum conexiuni SSL pe portul 4443, veți dori să includeți redirecționarea portului pentru HTTPS în suprascrierea docker compose:

version: '3'
services:
  weblate:
    ports:
      - 80:8080
      - 443:4443

Dacă găzduiți deja alte site-uri pe același server, este posibil ca porturile 80 și 443 să fie utilizate de un proxy invers, cum ar fi NGINX. Pentru a transmite conexiunea HTTPS de la NGINX la containerul docker, puteți utiliza următoarea configurație:

server {
    listen 443;
    listen [::]:443;

    server_name <SITE_URL>;
    ssl_certificate /etc/letsencrypt/live/<SITE>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<SITE>/privkey.pem;

    location / {
            proxy_set_header HOST $host;
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Host $server_name;
            proxy_pass https://127.0.0.1:<EXPOSED_DOCKER_PORT>;
    }
}

Înlocuiți <SITE_URL>, <SITE> și <EXPOSED_DOCKER_PORT> cu valorile reale din mediul dumneavoastră.

Certificate SSL automate folosind Let’s Encrypt

În cazul în care doriți să utilizați certificatele SSL generate automat de Let’s Encrypt pe instalația publică, trebuie să adăugați un proxy HTTPS invers un container Docker suplimentar, https-portal va fi utilizat pentru aceasta. Acest lucru este utilizat în fișierul docker-compose-https.yml. Apoi creați un fișier docker-compose-https.override.yml cu setările dumneavoastră:

version: '3'
services:
  weblate:
    environment:
      WEBLATE_EMAIL_HOST: smtp.example.com
      WEBLATE_EMAIL_HOST_USER: user
      WEBLATE_EMAIL_HOST_PASSWORD: pass
      WEBLATE_SITE_DOMAIN: weblate.example.com
      WEBLATE_ADMIN_PASSWORD: password for admin user
  https-portal:
    environment:
      DOMAINS: 'weblate.example.com -> http://weblate:8080'

Ori de câte ori invocați docker-compose trebuie să îi treceți ambele fișiere și apoi să faceți:

docker-compose -f docker-compose-https.yml -f docker-compose-https.override.yml build
docker-compose -f docker-compose-https.yml -f docker-compose-https.override.yml up
Actualizarea containerului Docker

De obicei, este o idee bună să actualizați doar containerul Weblate și să păstrați containerul PostgreSQL la versiunea pe care o aveți, deoarece actualizarea PostgreSQL este destul de dureroasă și, în majoritatea cazurilor, nu aduce multe beneficii.

Puteți face acest lucru rămânând la docker-compose existent și doar să extrageți cele mai recente imagini și apoi să reporniți:

# Fetch latest versions of the images
docker-compose pull
# Stop and destroy the containers
docker-compose down
# Spawn new containers in the background
docker-compose up -d
# Follow the logs during upgrade
docker-compose logs -f

Baza de date Weblate ar trebui să fie migrată automat la prima pornire și nu ar trebui să fie nevoie de acțiuni manuale suplimentare.

Notă

Actualizările de la versiunea 3.0 nu sunt acceptate de Weblate. Dacă sunteți pe seria 2.x și doriți să faceți upgrade la 3.x, faceți mai întâi upgrade la cea mai recentă imagine 3.0.1-x (la momentul scrierii acestui articol este 3.0.1-7), care va face migrarea și apoi veți continua să faceți upgrade la versiunile mai noi.

De asemenea, este posibil să doriți să actualizați depozitul docker-compose, deși nu este necesar în majoritatea cazurilor. Vă rugăm să aveți grijă la schimbările de versiune PostgreSQL în acest caz, deoarece nu este simplu să actualizați baza de date, consultați GitHub issue pentru mai multe informații.

Autentificare administrator

După configurarea containerului, vă puteți autentifica ca utilizator admin cu parola furnizată în WEBLATE_ADMIN_PASSWORD, sau cu o parolă aleatorie generată la prima pornire, dacă aceasta nu a fost setată.

Pentru a reseta parola admin, reporniți containerul cu WEBLATE_ADMIN_PASSWORD setat la noua parolă.

Numărul de procese și consumul de memorie

Numărul de procese de lucru atât pentru uWSGI, cât și pentru Celery este determinat automat pe baza numărului de unități centrale de procesare. Acest lucru funcționează bine pentru majoritatea mașinilor virtuale din cloud, deoarece acestea au, de obicei, câteva unități centrale de procesare și o cantitate bună de memorie.

În cazul în care aveți o mulțime de nuclee CPU și nu mai aveți probleme de memorie, încercați să reduceți numărul de lucrători:

environment:
  WEBLATE_WORKERS: 2

De asemenea, puteți ajusta cu precizie categoriile individuale de lucrători:

environment:
  UWSGI_WORKERS: 4
  CELERY_MAIN_OPTIONS: --concurrency 2
  CELERY_NOTIFY_OPTIONS: --concurrency 1
  CELERY_TRANSLATE_OPTIONS: --concurrency 1
Scalare pe orizontală

Nou în versiunea 4.6.

Atenționare

Această caracteristică este o previzualizare tehnologică.

Puteți rula mai multe containere Weblate pentru a scala serviciul pe orizontală. Volumul /app/data trebuie să fie partajat de toate containerele, pentru aceasta se recomandă utilizarea unui sistem de fișiere cluster, cum ar fi GlusterFS. Volumul /app/cache trebuie să fie separat pentru fiecare container.

Fiecare container Weblate are un rol definit folosind variabila de mediu WEBLATE_SERVICE. Vă rugăm să urmăriți cu atenție documentația, deoarece unele dintre servicii trebuie să ruleze o singură dată în cluster, iar ordinea serviciilor este importantă.

Puteți găsi un exemplu de configurare în repo-ul docker-compose ca docker-compose-split.yml.

Variabile de mediu Docker

Multe dintre parametrii Configurație ai Weblate pot fi setați în containerul Docker folosind variabile de mediu:

Setări generice
WEBLATE_DEBUG

Configurează modul de depanare Django folosind DEBUG.

Exemplu:

environment:
  WEBLATE_DEBUG: 1
WEBLATE_LOGLEVEL

Configurează verbozitatea de logare.

WEBLATE_SITE_TITLE

Schimbă titlul site-ului afișat în antetul tuturor paginilor.

WEBLATE_SITE_DOMAIN

Configurează domeniul site-ului. Acest parametru este obligatoriu.

WEBLATE_ADMIN_NAME
WEBLATE_ADMIN_EMAIL

Configurează numele și adresa de e-mail ale administratorului site-ului. Este utilizat atât pentru setarea ADMINS, cât și pentru crearea utilizatorului admin (a se vedea WEBLATE_ADMIN_PASSWORD pentru mai multe informații în acest sens).

Exemplu:

environment:
  WEBLATE_ADMIN_NAME: Weblate admin
  WEBLATE_ADMIN_EMAIL: noreply@example.com
WEBLATE_ADMIN_PASSWORD

Stabilește parola pentru utilizatorul admin.

  • Dacă nu este setat și utilizatorul admin nu există, acesta este creat cu o parolă aleatorie afișată la prima pornire a containerului.

  • Dacă nu este setat și există utilizatorul admin, nu se efectuează nicio acțiune.

  • Dacă este setat, utilizatorul admin este ajustat la fiecare pornire a containerului pentru a se potrivi cu WEBLATE_ADMIN_PASSWORD, WEBLATE_ADMIN_NAME și WEBLATE_ADMIN_EMAIL.

Atenționare

Stocarea parolei în fișierul de configurare ar putea reprezenta un risc de securitate. Luați în considerare utilizarea acestei variabile numai pentru configurarea inițială (sau lăsați Weblate să genereze o parolă aleatorie la pornirea inițială) sau pentru recuperarea parolei.

WEBLATE_ADMIN_PASSWORD_FILE

Stabilește calea către un fișier care conține parola pentru utilizatorul admin.

WEBLATE_SERVER_EMAIL
WEBLATE_DEFAULT_FROM_EMAIL

Configurează adresa pentru e-mailurile de ieșire.

WEBLATE_CONTACT_FORM

Configurează comportamentul formularului de contact, a se vedea CONTACT_FORM.

WEBLATE_ALLOWED_HOSTS

Configurează numele de gazdă HTTP permise folosind ALLOWED_HOSTS.

Valoarea implicită este * care permite toate numele de gazdă.

Exemplu:

environment:
  WEBLATE_ALLOWED_HOSTS: weblate.example.com,example.com
WEBLATE_REGISTRATION_OPEN

Configurează dacă înregistrările sunt deschise prin activarea REGISTRATION_OPEN.

Exemplu:

environment:
  WEBLATE_REGISTRATION_OPEN: 0
WEBLATE_REGISTRATION_ALLOW_BACKENDS

Configurați ce metode de autentificare pot fi folosite pentru a crea un cont nou prin REGISTRATION_ALLOW_BACKENDS.

Exemplu:

environment:
  WEBLATE_REGISTRATION_OPEN: 0
  WEBLATE_REGISTRATION_ALLOW_BACKENDS: azuread-oauth2,azuread-tenant-oauth2
WEBLATE_TIME_ZONE

Configurează fusul orar utilizat în Weblate, vezi TIME_ZONE.

Notă

Pentru a schimba fusul orar al containerului Docker în sine, utilizați variabila de mediu TZ.

Exemplu:

environment:
  WEBLATE_TIME_ZONE: Europe/Prague
WEBLATE_ENABLE_HTTPS

Face ca Weblate să presupună că este operat în spatele unui proxy HTTPS inversat, face ca Weblate să utilizeze HTTPS în e-mail și în legăturile API sau să seteze indicatori de siguranță pe cookie-uri.

Sugestie

Vă rugăm să consultați documentația ENABLE_HTTPS pentru eventualele avertismente.

Notă

Acest lucru nu face ca containerul Weblate să accepte conexiuni HTTPS, trebuie să configurați și acest lucru, consultați Container Docker cu suport HTTPS pentru exemple.

Exemplu:

environment:
  WEBLATE_ENABLE_HTTPS: 1
WEBLATE_IP_PROXY_HEADER

Permite lui Weblate să extragă adresa IP din orice antet HTTP dat. Utilizați această opțiune atunci când utilizați un proxy invers în fața containerului Weblate.

Activează IP_BEHIND_REVERSE_PROXY și setează IP_PROXY_HEADER.

Notă

Formatul trebuie să fie în conformitate cu așteptările Django. Acesta transformă numele brute ale antetului HTTP după cum urmează:

  • convertește toate caracterele în majuscule

  • înlocuiește orice cratimă cu sublinieri

  • adaugă prefixul HTTP_ ``

Așadar, X-Forwarded-For ar trebui să fie corespondat cu HTTP_X_FORWARDED_FOR.

Exemplu:

environment:
  WEBLATE_IP_PROXY_HEADER: HTTP_X_FORWARDED_FOR
WEBLATE_SECURE_PROXY_SSL_HEADER

Un tuple care reprezintă o combinație antet HTTP/valoare care indică faptul că o cerere este sigură. Acest lucru este necesar atunci când Weblate rulează în spatele unui proxy invers care face terminarea SSL și care nu transmite antetele HTTPS standard.

Exemplu:

environment:
  WEBLATE_SECURE_PROXY_SSL_HEADER: HTTP_X_FORWARDED_PROTO,https
WEBLATE_REQUIRE_LOGIN

Activează REQUIRE_LOGIN pentru a impune autentificarea pe întregul Weblate.

Exemplu:

environment:
  WEBLATE_REQUIRE_LOGIN: 1
WEBLATE_LOGIN_REQUIRED_URLS_EXCEPTIONS
WEBLATE_ADD_LOGIN_REQUIRED_URLS_EXCEPTIONS
WEBLATE_REMOVE_LOGIN_REQUIRED_URLS_EXCEPTIONS

Adaugă excepții URL pentru autentificarea necesară pentru întreaga instalare Weblate folosind LOGIN_REQUIRED_URLS_EXCEPTIONS.

Puteți fie să înlocuiți setări întregi, fie să modificați valoarea implicită folosind variabilele ADD și REMOVE.

WEBLATE_GOOGLE_ANALYTICS_ID

Configurează ID-ul pentru Google Analytics prin modificarea GOOGLE_ANALYTICS_ID.

WEBLATE_GITHUB_USERNAME

Configurează numele de utilizator GitHub pentru GitHub pull-requests prin modificarea GITHUB_USERNAME.

Vezi și

GitHub

WEBLATE_GITHUB_TOKEN

Nou în versiunea 4.3.

Configurează token-ul de acces personal GitHub pentru solicitările GitHub pull-requests prin API prin modificarea GITHUB_TOKEN.

Vezi și

GitHub

WEBLATE_GITLAB_USERNAME

Configurează numele de utilizator GitLab pentru cererile de fuziune GitLab prin modificarea GITLAB_USERNAME

Vezi și

GitLab

WEBLATE_GITLAB_TOKEN

Configurează token-ul de acces personal GitLab pentru cererile de fuziune GitLab prin API, modificând GITLAB_TOKEN

Vezi și

GitLab

WEBLATE_PAGURE_USERNAME

Configurează numele de utilizator Pagure pentru cererile de fuziune Pagure prin modificarea PAGURE_USERNAME

Vezi și

Pagure

WEBLATE_PAGURE_TOKEN

Configurează token-ul de acces personal Pagure pentru cererile de fuziune Pagure prin API prin modificarea PAGURE_TOKEN

Vezi și

Pagure

WEBLATE_SIMPLIFY_LANGUAGES

Configurează politica de simplificare a limbilor, a se vedea SIMPLIFY_LANGUAGES.

WEBLATE_DEFAULT_ACCESS_CONTROL

Configurează controlul implicit Controlul accesului pentru proiectele noi, a se vedea DEFAULT_ACCESS_CONTROL.

WEBLATE_DEFAULT_RESTRICTED_COMPONENT

Configurează valoarea implicită pentru Acces restricționat pentru componentele noi, a se vedea DEFAULT_RESTRICTED_COMPONENT.

WEBLATE_DEFAULT_TRANSLATION_PROPAGATION

Configurează valoarea implicită pentru Permiteți propagarea traducerii pentru componentele noi, a se vedea DEFAULT_TRANSLATION_PROPAGATION.

WEBLATE_DEFAULT_COMMITER_EMAIL

Configurează DEFAULT_COMMITER_EMAIL.

WEBLATE_DEFAULT_COMMITER_NAME

Configurează DEFAULT_COMMITER_NAME.

WEBLATE_DEFAULT_SHARED_TM

Configurează DEFAULT_SHARED_TM.

WEBLATE_AKISMET_API_KEY

Configurează cheia Akismet API, vezi AKISMET_API_KEY.

WEBLATE_GPG_IDENTITY

Configurează semnarea GPG a modificărilor, a se vedea WEBLATE_GPG_IDENTITY.

WEBLATE_URL_PREFIX

Configurează prefixul URL în care rulează Weblate, vezi URL_PREFIX.

WEBLATE_SILENCED_SYSTEM_CHECKS

Configurează verificările care nu doriți să fie afișate, a se vedea SILENCED_SYSTEM_CHECKS.

WEBLATE_CSP_SCRIPT_SRC
WEBLATE_CSP_IMG_SRC
WEBLATE_CSP_CONNECT_SRC
WEBLATE_CSP_STYLE_SRC
WEBLATE_CSP_FONT_SRC

Permite personalizarea antetului HTTP Content-Security-Policy.

WEBLATE_LICENSE_FILTER

Configurează LICENSE_FILTER.

WEBLATE_LICENSE_REQUIRED

Configurează LICENSE_REQUIRED

WEBLATE_WEBSITE_REQUIRED

Configurează WEBSITE_REQUIRED

WEBLATE_HIDE_VERSION

Configurează HIDE_VERSION.

WEBLATE_BASIC_LANGUAGES

Configurează BASIC_LANGUAGES.

WEBLATE_DEFAULT_AUTO_WATCH

Configurează DEFAULT_AUTO_WATCH.

WEBLATE_RATELIMIT_ATTEMPTS
WEBLATE_RATELIMIT_LOCKOUT
WEBLATE_RATELIMIT_WINDOW

Nou în versiunea 4.6.

Configurează limitatorul de viteză.

Sugestie

Puteți seta configurația pentru orice rază de cuprindere a limitatorului de viteză. Pentru a face acest lucru, adăugați prefixul WEBLATE_ la oricare dintre setările descrise în Limitarea ratei.

WEBLATE_ENABLE_AVATARS

Nou în versiunea 4.6.1.

Configurează ENABLE_AVATARS.

WEBLATE_LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH

Nou în versiunea 4.9.

Configures LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH.

WEBLATE_SSH_EXTRA_ARGS

Nou în versiunea 4.9.

Configures SSH_EXTRA_ARGS.

WEBLATE_BORG_EXTRA_ARGS

Nou în versiunea 4.9.

Configures BORG_EXTRA_ARGS.

Setări de traducere automată

Sugestie

Configurarea cheii API pentru un serviciu îl configurează automat în MT_SERVICES.

WEBLATE_MT_APERTIUM_APY

Activează traducerea automată Apertium și setează MT_APERTIUM_APY

WEBLATE_MT_AWS_REGION
WEBLATE_MT_AWS_ACCESS_KEY_ID
WEBLATE_MT_AWS_SECRET_ACCESS_KEY

Configurează traducerea automată AWS.

environment:
  WEBLATE_MT_AWS_REGION: us-east-1
  WEBLATE_MT_AWS_ACCESS_KEY_ID: AKIAIOSFODNN7EXAMPLE
  WEBLATE_MT_AWS_SECRET_ACCESS_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
WEBLATE_MT_DEEPL_KEY

Activează traducerea automată DeepL și setează MT_DEEPL_KEY

WEBLATE_MT_DEEPL_API_URL

Configurează DeepL versiunea API de utilizat, a se vedea MT_DEEPL_API_URL.

WEBLATE_MT_LIBRETRANSLATE_KEY

Activează traducerea automată Traducere Libre și setează MT_LIBRETRANSLATE_KEY

WEBLATE_MT_LIBRETRANSLATE_API_URL

Configurează Traducere Libre Instanța API de utilizat, a se vedea MT_LIBRETRANSLATE_API_URL.

WEBLATE_MT_GOOGLE_KEY

Activează Google Traducere și setează MT_GOOGLE_KEY

WEBLATE_MT_GOOGLE_CREDENTIALS

Enables Google Translate API V3 (Avansat) and sets MT_GOOGLE_CREDENTIALS

WEBLATE_MT_GOOGLE_PROJECT

Enables Google Translate API V3 (Avansat) and sets MT_GOOGLE_PROJECT

WEBLATE_MT_GOOGLE_LOCATION

Enables Google Translate API V3 (Avansat) and sets MT_GOOGLE_LOCATION

WEBLATE_MT_MICROSOFT_COGNITIVE_KEY

Activează Microsoft Servicii Cognitive Translator și setează MT_MICROSOFT_COGNITIVE_KEY

WEBLATE_MT_MICROSOFT_ENDPOINT_URL

Setează MT_MICROSOFT_ENDPOINT_URL; vă rugăm să rețineți că acesta trebuie să conțină doar numele de domeniu.

WEBLATE_MT_MICROSOFT_REGION

Setează MT_MICROSOFT_REGION

WEBLATE_MT_MICROSOFT_BASE_URL

Setează MT_MICROSOFT_BASE_URL

WEBLATE_MT_MODERNMT_KEY

Activează ModernMT și setează MT_MODERNMT_KEY.

WEBLATE_MT_MYMEMORY_ENABLED

Activează traducerea automată MemoriaMea și setează MT_MYMEMORY_EMAIL la WEBLATE_ADMIN_EMAIL.

Exemplu:

environment:
  WEBLATE_MT_MYMEMORY_ENABLED: 1
WEBLATE_MT_GLOSBE_ENABLED

Activează traducerea automată Glosbe.

environment:
  WEBLATE_MT_GLOSBE_ENABLED: 1
WEBLATE_MT_MICROSOFT_TERMINOLOGY_ENABLED

Activează traducerea automată ms-terminologie.

environment:
  WEBLATE_MT_MICROSOFT_TERMINOLOGY_ENABLED: 1
WEBLATE_MT_SAP_BASE_URL
WEBLATE_MT_SAP_SANDBOX_APIKEY
WEBLATE_MT_SAP_USERNAME
WEBLATE_MT_SAP_PASSWORD
WEBLATE_MT_SAP_USE_MT

Configurează traducerea automată Centrul de traduceri SAP.

environment:
    WEBLATE_MT_SAP_BASE_URL: "https://example.hana.ondemand.com/translationhub/api/v1/"
    WEBLATE_MT_SAP_USERNAME: "user"
    WEBLATE_MT_SAP_PASSWORD: "password"
    WEBLATE_MT_SAP_USE_MT: 1
Setări de autentificare
LDAP
WEBLATE_AUTH_LDAP_SERVER_URI
WEBLATE_AUTH_LDAP_USER_DN_TEMPLATE
WEBLATE_AUTH_LDAP_USER_ATTR_MAP
WEBLATE_AUTH_LDAP_BIND_DN
WEBLATE_AUTH_LDAP_BIND_PASSWORD
WEBLATE_AUTH_LDAP_CONNECTION_OPTION_REFERRALS
WEBLATE_AUTH_LDAP_USER_SEARCH_FILTER
WEBLATE_AUTH_LDAP_USER_SEARCH_UNION
WEBLATE_AUTH_LDAP_USER_SEARCH_UNION_DELIMITER

Configurarea autentificării LDAP.

Exemplu pentru legarea directă:

environment:
  WEBLATE_AUTH_LDAP_SERVER_URI: ldap://ldap.example.org
  WEBLATE_AUTH_LDAP_USER_DN_TEMPLATE: uid=%(user)s,ou=People,dc=example,dc=net
  # map weblate 'full_name' to ldap 'name' and weblate 'email' attribute to 'mail' ldap attribute.
  # another example that can be used with OpenLDAP: 'full_name:cn,email:mail'
  WEBLATE_AUTH_LDAP_USER_ATTR_MAP: full_name:name,email:mail

Exemplu pentru căutare și legare:

environment:
  WEBLATE_AUTH_LDAP_SERVER_URI: ldap://ldap.example.org
  WEBLATE_AUTH_LDAP_BIND_DN: CN=ldap,CN=Users,DC=example,DC=com
  WEBLATE_AUTH_LDAP_BIND_PASSWORD: password
  WEBLATE_AUTH_LDAP_USER_ATTR_MAP: full_name:name,email:mail
  WEBLATE_AUTH_LDAP_USER_SEARCH: CN=Users,DC=example,DC=com

Exemplu pentru căutarea și legarea uniunii:

environment:
  WEBLATE_AUTH_LDAP_SERVER_URI: ldap://ldap.example.org
  WEBLATE_AUTH_LDAP_BIND_DN: CN=ldap,CN=Users,DC=example,DC=com
  WEBLATE_AUTH_LDAP_BIND_PASSWORD: password
  WEBLATE_AUTH_LDAP_USER_ATTR_MAP: full_name:name,email:mail
  WEBLATE_AUTH_LDAP_USER_SEARCH_UNION: ou=users,dc=example,dc=com|ou=otherusers,dc=example,dc=com

Exemplu cu căutare și legare în Active Directory:

environment:
  WEBLATE_AUTH_LDAP_BIND_DN: CN=ldap,CN=Users,DC=example,DC=com
  WEBLATE_AUTH_LDAP_BIND_PASSWORD: password
  WEBLATE_AUTH_LDAP_SERVER_URI: ldap://ldap.example.org
  WEBLATE_AUTH_LDAP_CONNECTION_OPTION_REFERRALS: 0
  WEBLATE_AUTH_LDAP_USER_ATTR_MAP: full_name:name,email:mail
  WEBLATE_AUTH_LDAP_USER_SEARCH: CN=Users,DC=example,DC=com
  WEBLATE_AUTH_LDAP_USER_SEARCH_FILTER: (sAMAccountName=%(user)s)
GitHub
WEBLATE_SOCIAL_AUTH_GITHUB_KEY
WEBLATE_SOCIAL_AUTH_GITHUB_SECRET

Activează Autentificarea GitHub.

Bitbucket
WEBLATE_SOCIAL_AUTH_BITBUCKET_KEY
WEBLATE_SOCIAL_AUTH_BITBUCKET_SECRET

Activează Autentificarea Bitbucket.

Facebook
WEBLATE_SOCIAL_AUTH_FACEBOOK_KEY
WEBLATE_SOCIAL_AUTH_FACEBOOK_SECRET

Activează Facebook OAuth 2.

Google
WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET
WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS
WEBLATE_SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_EMAILS

Activează Google OAuth 2.

GitLab
WEBLATE_SOCIAL_AUTH_GITLAB_KEY
WEBLATE_SOCIAL_AUTH_GITLAB_SECRET
WEBLATE_SOCIAL_AUTH_GITLAB_API_URL

Activează GitLab OAuth 2.

Directorul Azure Activ
WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_AZUREAD_OAUTH2_SECRET

Activează autentificarea Azure Active Directory, consultați Microsoft Azure directoare active.

Azure Active Directory cu suport Tenant
WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET
WEBLATE_SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID

Activează autentificarea Azure Active Directory cu suport pentru Tenant, vezi Microsoft Azure directoare active.

Keycloak
WEBLATE_SOCIAL_AUTH_KEYCLOAK_KEY
WEBLATE_SOCIAL_AUTH_KEYCLOAK_SECRET
WEBLATE_SOCIAL_AUTH_KEYCLOAK_PUBLIC_KEY
WEBLATE_SOCIAL_AUTH_KEYCLOAK_ALGORITHM
WEBLATE_SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL
WEBLATE_SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL

Activează autentificarea Keycloak, a se vedea documentația.

Furnizori Linux

Puteți activa autentificarea utilizând serviciile de autentificare ale furnizorilor Linux prin setarea următoarelor variabile la orice valoare.

WEBLATE_SOCIAL_AUTH_FEDORA
WEBLATE_SOCIAL_AUTH_OPENSUSE
WEBLATE_SOCIAL_AUTH_UBUNTU
Slack
WEBLATE_SOCIAL_AUTH_SLACK_KEY
SOCIAL_AUTH_SLACK_SECRET

Activează autentificarea Slack, vezi Slack.

SAML

Cheile SAML autofirmate sunt generate automat la prima pornire a containerului. În cazul în care doriți să utilizați chei proprii, plasați certificatul și cheia privată în /app/data/ssl/saml.crt și /app/data/ssl/saml.key.

WEBLATE_SAML_IDP_ENTITY_ID
WEBLATE_SAML_IDP_URL
WEBLATE_SAML_IDP_X509CERT

Setările furnizorului de identitate SAML, consultați Autentificare SAML.

Alte setări de autentificare
WEBLATE_NO_EMAIL_AUTH

Dezactivează autentificarea e-mailurilor atunci când este setat la orice valoare.

Configurarea bazei de date PostgreSQL

Baza de date este creată de docker-compose.yml, astfel încât aceste setări afectează atât containerele Weblate, cât și PostgreSQL.

POSTGRES_PASSWORD

Parola PostgreSQL.

POSTGRES_PASSWORD_FILE

Calea către fișierul care conține parola PostgreSQL. Se utilizează ca alternativă la POSTGRES_PASSWORD.

POSTGRES_USER

Nume de utilizator PostgreSQL.

POSTGRES_DATABASE

Numele bazei de date PostgreSQL.

POSTGRES_HOST

Numele de gazdă sau adresa IP a serverului PostgreSQL. Valoarea implicită este database.

POSTGRES_PORT

Portul serverului PostgreSQL. Valoarea implicită este niciunul (utilizează valoarea implicită).

POSTGRES_SSL_MODE

Configurați modul în care PostgreSQL gestionează SSL în conexiunea cu serverul, pentru opțiunile posibile consultați SSL Mode Descriptions

POSTGRES_ALTER_ROLE

Configurează numele rolului care trebuie modificat în timpul migrărilor, a se vedea Configurarea Weblate pentru a utiliza PostgreSQL.

POSTGRES_CONN_MAX_AGE

Nou în versiunea 4.8.1.

Durata de viață a unei conexiuni la baza de date, ca număr întreg de secunde. Utilizați 0 pentru a închide conexiunile la baza de date la sfârșitul fiecărei cereri (acesta este comportamentul implicit).

Activarea persistenței conexiunii va determina, de obicei, mai multe conexiuni deschise la baza de date. Vă rugăm să ajustați configurația bazei de date înainte de activare.

Exemplu de configurare:

environment:
    POSTGRES_CONN_MAX_AGE: 3600
Setări de salvare a bazei de date
WEBLATE_DATABASE_BACKUP

Configurează descărcarea zilnică a bazei de date folosind DATABASE_BACKUP. Valoarea implicită este plain.

Configurarea serverului Caching

Utilizarea Redis este puternic recomandată de Weblate și trebuie să furnizați o instanță Redis atunci când executați Weblate în Docker.

REDIS_HOST

Numele de gazdă sau adresa IP a serverului Redis. Valoarea implicită este cache.

REDIS_PORT

Portul serverului Redis. Valoarea implicită este 6379.

REDIS_DB

Numărul bazei de date Redis, valoarea implicită este 1.

REDIS_PASSWORD

Parola serverului Redis, care nu este utilizată în mod implicit.

REDIS_TLS

Activează utilizarea SSL pentru conexiunea Redis.

REDIS_VERIFY_SSL

Poate fi utilizat pentru a dezactiva verificarea certificatului SSL pentru conexiunea Redis.

Configurarea serverului de e-mail

Pentru ca poșta electronică de ieșire să funcționeze, trebuie să furnizați un server de poștă electronică.

Exemplu de configurare TLS:

environment:
    WEBLATE_EMAIL_HOST: smtp.example.com
    WEBLATE_EMAIL_HOST_USER: user
    WEBLATE_EMAIL_HOST_PASSWORD: pass

Exemplu de configurare SSL:

environment:
    WEBLATE_EMAIL_HOST: smtp.example.com
    WEBLATE_EMAIL_PORT: 465
    WEBLATE_EMAIL_HOST_USER: user
    WEBLATE_EMAIL_HOST_PASSWORD: pass
    WEBLATE_EMAIL_USE_TLS: 0
    WEBLATE_EMAIL_USE_SSL: 1
WEBLATE_EMAIL_HOST

Numele de gazdă sau adresa IP a serverului de poștă electronică.

WEBLATE_EMAIL_PORT

Portul serverului de poștă electronică, valoarea implicită este 25.

Vezi și

EMAIL_PORT

WEBLATE_EMAIL_HOST_USER

Utilizator de autentificare prin e-mail.

Vezi și

EMAIL_HOST_USER

WEBLATE_EMAIL_HOST_PASSWORD

Parola de autentificare a e-mailului.

WEBLATE_EMAIL_HOST_PASSWORD_FILE

Calea către fișierul care conține parola de autentificare a e-mailului.

WEBLATE_EMAIL_USE_SSL

Dacă se utilizează o conexiune TLS (securizată) implicită atunci când se vorbește cu serverul SMTP. În cea mai mare parte a documentației despre e-mail, acest tip de conexiune TLS este denumit SSL. În general, este utilizat pe portul 465. Dacă întâmpinați probleme, consultați setarea TLS explicită WEBLATE_EMAIL_USE_TLS.

WEBLATE_EMAIL_USE_TLS

Dacă se utilizează o conexiune TLS (securizată) atunci când se vorbește cu serverul SMTP. Aceasta este utilizată pentru conexiunile TLS explicite, în general pe portul 587 sau 25. Dacă vă confruntați cu conexiuni care se blochează, consultați setarea TLS implicită WEBLATE_EMAIL_USE_SSL.

WEBLATE_EMAIL_BACKEND

Configurează back-end-ul Django care va fi folosit pentru trimiterea de e-mailuri.

WEBLATE_AUTO_UPDATE

Configures if and how Weblate should update repositories.

Vezi și

AUTO_UPDATE

Notă

This is a Boolean setting (use "true" or "false").

Integrare site
WEBLATE_GET_HELP_URL

Configurează GET_HELP_URL.

WEBLATE_STATUS_URL

Configurează STATUS_URL.

Configurează LEGAL_URL.

WEBLATE_PRIVACY_URL

Configurează PRIVACY_URL.

Raportarea erorilor

Se recomandă colectarea sistematică a erorilor de la instalare, a se vedea Colectarea rapoartelor de eroare.

Pentru a activa suportul pentru Rollbar, setați următoarele:

ROLLBAR_KEY

Tokenul tău de acces la serverul Rollbar post.

ROLLBAR_ENVIRONMENT

Mediul dumneavoastră Rollbar, implicit production.

Pentru a activa suportul pentru Sentry, setați următoarele:

SENTRY_DSN

DSN-ul tău Sentry.

SENTRY_ENVIRONMENT

Mediul dumneavoastră Sentry (opțional).

Localizare CDN
WEBLATE_LOCALIZE_CDN_URL
WEBLATE_LOCALIZE_CDN_PATH

Nou în versiunea 4.2.1.

Configurație pentru CDN de localizare JavaScript.

WEBLATE_LOCALIZE_CDN_PATH este calea din container. Acesta trebuie să fie stocat pe volumul persistent și nu în memoria tranzitorie.

Una dintre posibilități este stocarea acestora în directorul de date Weblate:

environment:
  WEBLATE_LOCALIZE_CDN_URL: https://cdn.example.com/
  WEBLATE_LOCALIZE_CDN_PATH: /app/data/l10n-cdn

Notă

Sunteți responsabil pentru configurarea serviciului de servire a fișierelor generate de Weblate, acesta doar stochează fișierele în locația configurată.

Schimbarea aplicațiilor, verificărilor, suplimentelor sau autofixelor activate

Nou în versiunea 3.8-5.

Configurația încorporată a verificărilor activate, a suplimentelor sau a corecțiilor automate poate fi ajustată cu ajutorul următoarelor variabile:

WEBLATE_ADD_APPS
WEBLATE_REMOVE_APPS
WEBLATE_ADD_CHECK
WEBLATE_REMOVE_CHECK
WEBLATE_ADD_AUTOFIX
WEBLATE_REMOVE_AUTOFIX
WEBLATE_ADD_ADDONS
WEBLATE_REMOVE_ADDONS

Exemplu:

environment:
  WEBLATE_REMOVE_AUTOFIX: weblate.trans.autofixes.whitespace.SameBookendingWhitespace
  WEBLATE_ADD_ADDONS: customize.addons.MyAddon,customize.addons.OtherAddon
Setări container
WEBLATE_WORKERS

Nou în versiunea 4.6.1.

Numărul de bază al proceselor de lucru care rulează în container. Dacă nu este setat, acesta este determinat automat la pornirea containerului pe baza numărului de nuclee CPU disponibile.

Este folosit pentru a determina CELERY_MAIN_OPTIONS, CELERY_NOTIFY_OPTIONS, CELERY_MEMORY_OPTIONS, : envvar:CELERY_TRANSLATE_OPTIONS, CELERY_BACKUP_OPTIONS, CELERY_BEAT_OPTIONS și UWSGI_WORKERS. Puteți utiliza aceste setări pentru a face reglaje fine.

CELERY_MAIN_OPTIONS
CELERY_NOTIFY_OPTIONS
CELERY_MEMORY_OPTIONS
CELERY_TRANSLATE_OPTIONS
CELERY_BACKUP_OPTIONS
CELERY_BEAT_OPTIONS

Aceste variabile vă permit să ajustați opțiunile lucrătorului Celery. Poate fi utilă pentru a ajusta concurența (--concurrency 16) sau pentru a utiliza o implementare diferită a pool-ului (--pool=gevent).

În mod implicit, numărul de lucrători simultani se bazează pe WEBLATE_WORKERS.

Exemplu:

environment:
  CELERY_MAIN_OPTIONS: --concurrency 16
UWSGI_WORKERS

Configurați câți lucrători uWSGI trebuie să fie executați.

Valoarea implicită este WEBLATE_WORKERS.

Exemplu:

environment:
  UWSGI_WORKERS: 32
WEBLATE_SERVICE

Definește ce servicii ar trebui să fie executate în interiorul containerului. Utilizați acest lucru pentru Scalare pe orizontală.

Sunt definite următoarele servicii:

celery-beat

Celery task scheduler, doar o singură instanță ar trebui să ruleze. Acest container este, de asemenea, responsabil pentru migrarea structurii bazei de date și trebuie să fie pornit înaintea celorlalte.

celery-backup

Celery worker pentru copii de rezervă, o singură instanță trebuie să ruleze.

celery-celery

Lucrător generic Celery.

celery-memory

Memoria de traducere Celery worker.

celery-notify

Notificări Celery worker.

celery-translate

Traducere automată Celery worker.

web

Serverul web.

Volumele containerelor Docker

Există două volume (date și cache) exportate de containerul Weblate. Celelalte containere de servicii (PostgreSQL sau Redis) au, de asemenea, volumele lor de date, dar acestea nu sunt acoperite de acest document.

Volumul de date este utilizat pentru a stoca date persistente Weblate, cum ar fi depozitele clonate sau pentru a personaliza instalarea Weblate.

Amplasarea volumului Docker pe sistemul gazdă depinde de configurația Docker, dar de obicei acesta este stocat în /var/lib/docker/volumes/weblate-docker_weblate-data/_data/ (calea este formată din numele directorului docker-compose, containerul și numele volumului). În container, acesta este montat ca /app/data.

Volumul cache este montat ca /app/cache și este utilizat pentru a stoca fișiere statice. Conținutul său este recreat la pornirea containerului, iar volumul poate fi montat utilizând un sistem de fișiere efemere, cum ar fi tmpfs.

La crearea manuală a volumelor, directoarele trebuie să fie deținute de UID 1000, deoarece acesta este utilizatorul utilizat în container.

Personalizare suplimentară a configurației

Puteți personaliza în continuare instalarea Weblate în volumul de date, consultați Volumele containerelor Docker.

Fișiere de configurare personalizate

Puteți suprascrie suplimentar configurația în /app/data/settings-override.py (vezi Volumele containerelor Docker). Acesta este executat la sfârșitul setărilor încorporate, după ce toate setările de mediu sunt încărcate, și le puteți ajusta sau suprascrie.

Înlocuirea logo-ului și a altor fișiere statice

Nou în versiunea 3.8-5.

Fișierele statice care vin cu Weblate pot fi înlocuite prin plasarea în /app/data/python/customize/static (a se vedea Volumele containerelor Docker). De exemplu, crearea /app/data/python/customize/static/favicon.ico va înlocui faviconul.

Sugestie

Fișierele sunt copiate în locația corespunzătoare la pornirea containerului, astfel încât este necesară o repornire a Weblate după modificarea conținutului volumului.

Alternativ, puteți, de asemenea, să includeți propriul modul (a se vedea Personalizarea Weblate) și să îl adăugați ca volum separat la containerul Docker, de exemplu:

weblate:
  volumes:
    - weblate-data:/app/data
    - ./weblate_customization/weblate_customization:/app/data/python/weblate_customization
  environment:
    WEBLATE_ADD_APPS: weblate_customization
Adăugarea de module Python proprii

Nou în versiunea 3.8-5.

Puteți plasa propriile module Python în /app/data/python/ (a se vedea Volumele containerelor Docker) și acestea pot fi apoi încărcate de Weblate, cel mai probabil prin utilizarea Fișiere de configurare personalizate.

Instalarea pe Debian și Ubuntu

Cerințe hardware

Weblate ar trebui să ruleze fără probleme pe orice hardware contemporan, următoarea este configurația minimă necesară pentru a rula Weblate pe o singură gazdă (Weblate, baza de date și serverul web):

  • 2 GB de RAM

  • 2 nuclee CPU

  • 1 GB de spațiu de stocare

Cu cât mai multă memorie, cu atât mai bine - aceasta este utilizată pentru memoria cache la toate nivelurile (sistem de fișiere, bază de date și Weblate).

Un număr mare de utilizatori simultani crește numărul de nuclee CPU necesare. Pentru sute de componente de traducere se recomandă cel puțin 4 GB de memorie RAM.

Utilizarea obișnuită a bazei de date este de aproximativ 300 MB pentru 1 milion de cuvinte găzduite. Spațiul de stocare necesar pentru depozitele clonate variază, dar Weblate încearcă să mențină dimensiunea acestora la un nivel minim prin clonarea superficială.

Notă

Cerințele reale pentru instalarea Weblate variază foarte mult în funcție de dimensiunea traducerilor gestionate în cadrul acesteia.

Instalare
Cerințe de sistem

Instalați dependențele necesare pentru a construi modulele Python (consultați Cerințe software):

apt install \
   libxml2-dev libxslt-dev libfreetype6-dev libjpeg-dev libz-dev libyaml-dev \
   libcairo-dev gir1.2-pango-1.0 libgirepository1.0-dev libacl1-dev libssl-dev \
   build-essential python3-gdbm python3-dev python3-pip python3-virtualenv virtualenv git

Instalați dependențele opționale dorite în funcție de caracteristicile pe care intenționați să le utilizați (vezi Dependențe opționale):

apt install tesseract-ocr libtesseract-dev libleptonica-dev

Instalarea opțională a software-ului pentru rularea serverului de producție, a se vedea Rularea serverului, Configurarea bazei de date pentru Weblate, Sarcini de fundal folosind Celery. În funcție de mărimea instalației tale, este posibil să dorești să rulezi aceste componente pe servere dedicate.

Instrucțiunile de instalare locală:

# Web server option 1: NGINX and uWSGI
apt install nginx uwsgi uwsgi-plugin-python3

# Web server option 2: Apache with ``mod_wsgi``
apt install apache2 libapache2-mod-wsgi-py3

# Caching backend: Redis
apt install redis-server

# Database server: PostgreSQL
apt install postgresql postgresql-contrib

# SMTP server
apt install exim4
Module Python

Sugestie

Folosim virtualenv pentru a instala Weblate într-un mediu separat de sistemul dumneavoastră. Dacă nu sunteți familiarizați cu el, consultați virtualenv User Guide.

  1. Creați un virtualenv pentru Weblate:

    virtualenv --python=python3 ~/weblate-env
    
  2. Activați virtualenv pentru Weblate:

    . ~/weblate-env/bin/activate
    
  3. Install Weblate including all optional dependencies:

    pip install "Weblate[all]"
    

    Please check Dependențe opționale for fine-tuning of optional dependencies.

Configurarea Weblate

Notă

Următorii pași presupun că virtualenv folosit de Weblate este activ (ceea ce se poate face prin . ~/weblate-env/bin/activate). În cazul în care acest lucru nu este adevărat, va trebui să specificați calea completă a comenzii weblate ca ~/weblate-env/bin/weblate.

  1. Copiați fișierul ~/weblate-env/lib/python3.7/site-packages/weblate/settings_example.py în ~/weblate-env/lib/python3.7/site-packages/weblate/settings.py.

  2. Ajustați valorile din noul fișier settings.py după bunul plac. Va trebui să furnizați cel puțin credențialele bazei de date și cheia secretă Django, dar veți dori mai multe modificări pentru configurarea de producție, consultați Ajustarea configurației.

  3. Creați baza de date și structura acesteia pentru Weblate (setările de exemplu utilizează PostgreSQL, verificați Configurarea bazei de date pentru Weblate pentru o configurare pregătită pentru producție):

    weblate migrate
    
  4. Creați contul de utilizator administrator și copiați parola pe care o scoate în clipboard și, de asemenea, salvați-o pentru utilizare ulterioară:

    weblate createadmin
    
  5. Colectează fișiere statice pentru serverul web (a se vedea Rularea serverului și Servirea fișierelor statice):

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

    weblate compress
    
  7. Începeți să lucrați cu Celery. Acest lucru nu este necesar în scopuri de dezvoltare, dar este recomandat cu tărie în caz contrar. Pentru mai multe informații, consultați Sarcini de fundal folosind Celery:

    ~/weblate-env/lib/python3.7/site-packages/weblate/examples/celery start
    
  8. Porniți serverul de dezvoltare (consultați Rularea serverului pentru configurația de producție):

    weblate runserver
    
După instalare

Felicitări, serverul Weblate este acum în funcțiune și puteți începe să îl utilizați.

  • Acum puteți accesa Weblate pe http://localhost:8000/.

  • Conectați-vă cu acreditările de administrator obținute în timpul instalării sau înregistrați-vă cu utilizatori noi.

  • Acum puteți rula comenzi Weblate folosind comanda weblate atunci când Weblate virtualenv este activ, consultați Comenzi de gestionare.

  • Puteți opri serverul de testare cu Ctrl+C.

  • Review potential issues with your installation either on /manage/performance/ URL (see Interfața de gestionare) or using weblate check --deploy, see Configurarea producției.

Adăugarea traducerii
  1. Deschideți interfața de administrare (http://localhost:8000/create/project/) și creați proiectul pe care doriți să-l traduceți. Consultați proiect pentru mai multe detalii.

    Tot ce trebuie să specificați aici este numele proiectului și site-ul acestuia.

  2. Creați o componentă care este obiectul real al traducerii - aceasta indică depozitul VCS și selectează fișierele care trebuie traduse. Pentru mai multe detalii, consultați Configurația componentei.

    Domeniile importante sunt: Numele componentei, adresa depozitului VCS și masca pentru găsirea fișierelor traductibile. Weblate acceptă o gamă largă de formate, inclusiv fișiere gettext PO, șiruri de resurse Android, proprietăți de șiruri iOS, proprietăți Java sau fișiere Qt Linguist, consultați Formate de fișiere acceptate pentru mai multe detalii.

  3. După ce ați finalizat cele de mai sus (poate fi un proces de lungă durată, în funcție de dimensiunea depozitului VCS și de numărul de mesaje de tradus), puteți începe traducerea.

Instalarea pe SUSE și openSUSE

Cerințe hardware

Weblate ar trebui să ruleze fără probleme pe orice hardware contemporan, următoarea este configurația minimă necesară pentru a rula Weblate pe o singură gazdă (Weblate, baza de date și serverul web):

  • 2 GB de RAM

  • 2 nuclee CPU

  • 1 GB de spațiu de stocare

Cu cât mai multă memorie, cu atât mai bine - aceasta este utilizată pentru memoria cache la toate nivelurile (sistem de fișiere, bază de date și Weblate).

Un număr mare de utilizatori simultani crește numărul de nuclee CPU necesare. Pentru sute de componente de traducere se recomandă cel puțin 4 GB de memorie RAM.

Utilizarea obișnuită a bazei de date este de aproximativ 300 MB pentru 1 milion de cuvinte găzduite. Spațiul de stocare necesar pentru depozitele clonate variază, dar Weblate încearcă să mențină dimensiunea acestora la un nivel minim prin clonarea superficială.

Notă

Cerințele reale pentru instalarea Weblate variază foarte mult în funcție de dimensiunea traducerilor gestionate în cadrul acesteia.

Instalare
Cerințe de sistem

Instalați dependențele necesare pentru a construi modulele Python (consultați Cerințe software):

zypper install \
   libxslt-devel libxml2-devel freetype-devel libjpeg-devel zlib-devel libyaml-devel \
   cairo-devel typelib-1_0-Pango-1_0 gobject-introspection-devel libacl-devel \
   python3-pip python3-virtualenv python3-devel git

Instalați dependențele opționale dorite în funcție de caracteristicile pe care intenționați să le utilizați (vezi Dependențe opționale):

zypper install tesseract-ocr tesseract-devel leptonica-devel

Instalarea opțională a software-ului pentru rularea serverului de producție, a se vedea Rularea serverului, Configurarea bazei de date pentru Weblate, Sarcini de fundal folosind Celery. În funcție de mărimea instalației tale, este posibil să dorești să rulezi aceste componente pe servere dedicate.

Instrucțiunile de instalare locală:

# Web server option 1: NGINX and uWSGI
zypper install nginx uwsgi uwsgi-plugin-python3

# Web server option 2: Apache with ``mod_wsgi``
zypper install apache2 apache2-mod_wsgi

# Caching backend: Redis
zypper install redis-server

# Database server: PostgreSQL
zypper install postgresql postgresql-contrib

# SMTP server
zypper install postfix
Module Python

Sugestie

Folosim virtualenv pentru a instala Weblate într-un mediu separat de sistemul dumneavoastră. Dacă nu sunteți familiarizați cu el, consultați virtualenv User Guide.

  1. Creați un virtualenv pentru Weblate:

    virtualenv --python=python3 ~/weblate-env
    
  2. Activați virtualenv pentru Weblate:

    . ~/weblate-env/bin/activate
    
  3. Install Weblate including all optional dependencies:

    pip install "Weblate[all]"
    

    Please check Dependențe opționale for fine-tuning of optional dependencies.

Configurarea Weblate

Notă

Următorii pași presupun că virtualenv folosit de Weblate este activ (ceea ce se poate face prin . ~/weblate-env/bin/activate). În cazul în care acest lucru nu este adevărat, va trebui să specificați calea completă a comenzii weblate ca ~/weblate-env/bin/weblate.

  1. Copiați fișierul ~/weblate-env/lib/python3.7/site-packages/weblate/settings_example.py în ~/weblate-env/lib/python3.7/site-packages/weblate/settings.py.

  2. Ajustați valorile din noul fișier settings.py după bunul plac. Va trebui să furnizați cel puțin credențialele bazei de date și cheia secretă Django, dar veți dori mai multe modificări pentru configurarea de producție, consultați Ajustarea configurației.

  3. Creați baza de date și structura acesteia pentru Weblate (setările de exemplu utilizează PostgreSQL, verificați Configurarea bazei de date pentru Weblate pentru o configurare pregătită pentru producție):

    weblate migrate
    
  4. Creați contul de utilizator administrator și copiați parola pe care o scoate în clipboard și, de asemenea, salvați-o pentru utilizare ulterioară:

    weblate createadmin
    
  5. Colectează fișiere statice pentru serverul web (a se vedea Rularea serverului și Servirea fișierelor statice):

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

    weblate compress
    
  7. Începeți să lucrați cu Celery. Acest lucru nu este necesar în scopuri de dezvoltare, dar este recomandat cu tărie în caz contrar. Pentru mai multe informații, consultați Sarcini de fundal folosind Celery:

    ~/weblate-env/lib/python3.7/site-packages/weblate/examples/celery start
    
  8. Porniți serverul de dezvoltare (consultați Rularea serverului pentru configurația de producție):

    weblate runserver
    
După instalare

Felicitări, serverul Weblate este acum în funcțiune și puteți începe să îl utilizați.

  • Acum puteți accesa Weblate pe http://localhost:8000/.

  • Conectați-vă cu acreditările de administrator obținute în timpul instalării sau înregistrați-vă cu utilizatori noi.

  • Acum puteți rula comenzi Weblate folosind comanda weblate atunci când Weblate virtualenv este activ, consultați Comenzi de gestionare.

  • Puteți opri serverul de testare cu Ctrl+C.

  • Review potential issues with your installation either on /manage/performance/ URL (see Interfața de gestionare) or using weblate check --deploy, see Configurarea producției.

Adăugarea traducerii
  1. Deschideți interfața de administrare (http://localhost:8000/create/project/) și creați proiectul pe care doriți să-l traduceți. Consultați proiect pentru mai multe detalii.

    Tot ce trebuie să specificați aici este numele proiectului și site-ul acestuia.

  2. Creați o componentă care este obiectul real al traducerii - aceasta indică depozitul VCS și selectează fișierele care trebuie traduse. Pentru mai multe detalii, consultați Configurația componentei.

    Domeniile importante sunt: Numele componentei, adresa depozitului VCS și masca pentru găsirea fișierelor traductibile. Weblate acceptă o gamă largă de formate, inclusiv fișiere gettext PO, șiruri de resurse Android, proprietăți de șiruri iOS, proprietăți Java sau fișiere Qt Linguist, consultați Formate de fișiere acceptate pentru mai multe detalii.

  3. După ce ați finalizat cele de mai sus (poate fi un proces de lungă durată, în funcție de dimensiunea depozitului VCS și de numărul de mesaje de tradus), puteți începe traducerea.

Instalarea pe RedHat, Fedora și CentOS

Cerințe hardware

Weblate ar trebui să ruleze fără probleme pe orice hardware contemporan, următoarea este configurația minimă necesară pentru a rula Weblate pe o singură gazdă (Weblate, baza de date și serverul web):

  • 2 GB de RAM

  • 2 nuclee CPU

  • 1 GB de spațiu de stocare

Cu cât mai multă memorie, cu atât mai bine - aceasta este utilizată pentru memoria cache la toate nivelurile (sistem de fișiere, bază de date și Weblate).

Un număr mare de utilizatori simultani crește numărul de nuclee CPU necesare. Pentru sute de componente de traducere se recomandă cel puțin 4 GB de memorie RAM.

Utilizarea obișnuită a bazei de date este de aproximativ 300 MB pentru 1 milion de cuvinte găzduite. Spațiul de stocare necesar pentru depozitele clonate variază, dar Weblate încearcă să mențină dimensiunea acestora la un nivel minim prin clonarea superficială.

Notă

Cerințele reale pentru instalarea Weblate variază foarte mult în funcție de dimensiunea traducerilor gestionate în cadrul acesteia.

Instalare
Cerințe de sistem

Instalați dependențele necesare pentru a construi modulele Python (consultați Cerințe software):

dnf install \
   libxslt-devel libxml2-devel freetype-devel libjpeg-devel zlib-devel libyaml-devel \
   cairo-devel pango-devel gobject-introspection-devel libacl-devel \
   python3-pip python3-virtualenv python3-devel git

Instalați dependențele opționale dorite în funcție de caracteristicile pe care intenționați să le utilizați (vezi Dependențe opționale):

dnf install tesseract-langpack-eng tesseract-devel leptonica-devel

Instalarea opțională a software-ului pentru rularea serverului de producție, a se vedea Rularea serverului, Configurarea bazei de date pentru Weblate, Sarcini de fundal folosind Celery. În funcție de mărimea instalației tale, este posibil să dorești să rulezi aceste componente pe servere dedicate.

Instrucțiunile de instalare locală:

# Web server option 1: NGINX and uWSGI
dnf install nginx uwsgi uwsgi-plugin-python3

# Web server option 2: Apache with ``mod_wsgi``
dnf install apache2 apache2-mod_wsgi

# Caching backend: Redis
dnf install redis

# Database server: PostgreSQL
dnf install postgresql postgresql-contrib

# SMTP server
dnf install postfix
Module Python

Sugestie

Folosim virtualenv pentru a instala Weblate într-un mediu separat de sistemul dumneavoastră. Dacă nu sunteți familiarizați cu el, consultați virtualenv User Guide.

  1. Creați un virtualenv pentru Weblate:

    virtualenv --python=python3 ~/weblate-env
    
  2. Activați virtualenv pentru Weblate:

    . ~/weblate-env/bin/activate
    
  3. Install Weblate including all optional dependencies:

    pip install "Weblate[all]"
    

    Please check Dependențe opționale for fine-tuning of optional dependencies.

Configurarea Weblate

Notă

Următorii pași presupun că virtualenv folosit de Weblate este activ (ceea ce se poate face prin . ~/weblate-env/bin/activate). În cazul în care acest lucru nu este adevărat, va trebui să specificați calea completă a comenzii weblate ca ~/weblate-env/bin/weblate.

  1. Copiați fișierul ~/weblate-env/lib/python3.7/site-packages/weblate/settings_example.py în ~/weblate-env/lib/python3.7/site-packages/weblate/settings.py.

  2. Ajustați valorile din noul fișier settings.py după bunul plac. Va trebui să furnizați cel puțin credențialele bazei de date și cheia secretă Django, dar veți dori mai multe modificări pentru configurarea de producție, consultați Ajustarea configurației.

  3. Creați baza de date și structura acesteia pentru Weblate (setările de exemplu utilizează PostgreSQL, verificați Configurarea bazei de date pentru Weblate pentru o configurare pregătită pentru producție):

    weblate migrate
    
  4. Creați contul de utilizator administrator și copiați parola pe care o scoate în clipboard și, de asemenea, salvați-o pentru utilizare ulterioară:

    weblate createadmin
    
  5. Colectează fișiere statice pentru serverul web (a se vedea Rularea serverului și Servirea fișierelor statice):

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

    weblate compress
    
  7. Începeți să lucrați cu Celery. Acest lucru nu este necesar în scopuri de dezvoltare, dar este recomandat cu tărie în caz contrar. Pentru mai multe informații, consultați Sarcini de fundal folosind Celery:

    ~/weblate-env/lib/python3.7/site-packages/weblate/examples/celery start
    
  8. Porniți serverul de dezvoltare (consultați Rularea serverului pentru configurația de producție):

    weblate runserver
    
După instalare

Felicitări, serverul Weblate este acum în funcțiune și puteți începe să îl utilizați.

  • Acum puteți accesa Weblate pe http://localhost:8000/.

  • Conectați-vă cu acreditările de administrator obținute în timpul instalării sau înregistrați-vă cu utilizatori noi.

  • Acum puteți rula comenzi Weblate folosind comanda weblate atunci când Weblate virtualenv este activ, consultați Comenzi de gestionare.

  • Puteți opri serverul de testare cu Ctrl+C.

  • Review potential issues with your installation either on /manage/performance/ URL (see Interfața de gestionare) or using weblate check --deploy, see Configurarea producției.

Adăugarea traducerii
  1. Deschideți interfața de administrare (http://localhost:8000/create/project/) și creați proiectul pe care doriți să-l traduceți. Consultați proiect pentru mai multe detalii.

    Tot ce trebuie să specificați aici este numele proiectului și site-ul acestuia.

  2. Creați o componentă care este obiectul real al traducerii - aceasta indică depozitul VCS și selectează fișierele care trebuie traduse. Pentru mai multe detalii, consultați Configurația componentei.

    Domeniile importante sunt: Numele componentei, adresa depozitului VCS și masca pentru găsirea fișierelor traductibile. Weblate acceptă o gamă largă de formate, inclusiv fișiere gettext PO, șiruri de resurse Android, proprietăți de șiruri iOS, proprietăți Java sau fișiere Qt Linguist, consultați Formate de fișiere acceptate pentru mai multe detalii.

  3. După ce ați finalizat cele de mai sus (poate fi un proces de lungă durată, în funcție de dimensiunea depozitului VCS și de numărul de mesaje de tradus), puteți începe traducerea.

Instalarea pe macOS

Cerințe hardware

Weblate ar trebui să ruleze fără probleme pe orice hardware contemporan, următoarea este configurația minimă necesară pentru a rula Weblate pe o singură gazdă (Weblate, baza de date și serverul web):

  • 2 GB de RAM

  • 2 nuclee CPU

  • 1 GB de spațiu de stocare

Cu cât mai multă memorie, cu atât mai bine - aceasta este utilizată pentru memoria cache la toate nivelurile (sistem de fișiere, bază de date și Weblate).

Un număr mare de utilizatori simultani crește numărul de nuclee CPU necesare. Pentru sute de componente de traducere se recomandă cel puțin 4 GB de memorie RAM.

Utilizarea obișnuită a bazei de date este de aproximativ 300 MB pentru 1 milion de cuvinte găzduite. Spațiul de stocare necesar pentru depozitele clonate variază, dar Weblate încearcă să mențină dimensiunea acestora la un nivel minim prin clonarea superficială.

Notă

Cerințele reale pentru instalarea Weblate variază foarte mult în funcție de dimensiunea traducerilor gestionate în cadrul acesteia.

Instalare
Cerințe de sistem

Instalați dependențele necesare pentru a construi modulele Python (consultați Cerințe software):

brew install python pango cairo gobject-introspection libffi glib libyaml
pip3 install virtualenv

Asigurați-vă că pip va fi capabil să găsească versiunea libffi furnizată de homebrew - aceasta va fi necesară în timpul etapei de compilare a instalării.

export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig"

Instalați dependențele opționale dorite în funcție de caracteristicile pe care intenționați să le utilizați (vezi Dependențe opționale):

brew install tesseract

Instalarea opțională a software-ului pentru rularea serverului de producție, a se vedea Rularea serverului, Configurarea bazei de date pentru Weblate, Sarcini de fundal folosind Celery. În funcție de mărimea instalației tale, este posibil să dorești să rulezi aceste componente pe servere dedicate.

Instrucțiunile de instalare locală:

# Web server option 1: NGINX and uWSGI
brew install nginx uwsgi

# Web server option 2: Apache with ``mod_wsgi``
brew install httpd

# Caching backend: Redis
brew install redis

# Database server: PostgreSQL
brew install postgresql
Module Python

Sugestie

Folosim virtualenv pentru a instala Weblate într-un mediu separat de sistemul dumneavoastră. Dacă nu sunteți familiarizați cu el, consultați virtualenv User Guide.

  1. Creați un virtualenv pentru Weblate:

    virtualenv --python=python3 ~/weblate-env
    
  2. Activați virtualenv pentru Weblate:

    . ~/weblate-env/bin/activate
    
  3. Install Weblate including all optional dependencies:

    pip install "Weblate[all]"
    

    Please check Dependențe opționale for fine-tuning of optional dependencies.

Configurarea Weblate

Notă

Următorii pași presupun că virtualenv folosit de Weblate este activ (ceea ce se poate face prin . ~/weblate-env/bin/activate). În cazul în care acest lucru nu este adevărat, va trebui să specificați calea completă a comenzii weblate ca ~/weblate-env/bin/weblate.

  1. Copiați fișierul ~/weblate-env/lib/python3.7/site-packages/weblate/settings_example.py în ~/weblate-env/lib/python3.7/site-packages/weblate/settings.py.

  2. Ajustați valorile din noul fișier settings.py după bunul plac. Va trebui să furnizați cel puțin credențialele bazei de date și cheia secretă Django, dar veți dori mai multe modificări pentru configurarea de producție, consultați Ajustarea configurației.

  3. Creați baza de date și structura acesteia pentru Weblate (setările de exemplu utilizează PostgreSQL, verificați Configurarea bazei de date pentru Weblate pentru o configurare pregătită pentru producție):

    weblate migrate
    
  4. Creați contul de utilizator administrator și copiați parola pe care o scoate în clipboard și, de asemenea, salvați-o pentru utilizare ulterioară:

    weblate createadmin
    
  5. Colectează fișiere statice pentru serverul web (a se vedea Rularea serverului și Servirea fișierelor statice):

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

    weblate compress
    
  7. Începeți să lucrați cu Celery. Acest lucru nu este necesar în scopuri de dezvoltare, dar este recomandat cu tărie în caz contrar. Pentru mai multe informații, consultați Sarcini de fundal folosind Celery:

    ~/weblate-env/lib/python3.7/site-packages/weblate/examples/celery start
    
  8. Porniți serverul de dezvoltare (consultați Rularea serverului pentru configurația de producție):

    weblate runserver
    
După instalare

Felicitări, serverul Weblate este acum în funcțiune și puteți începe să îl utilizați.

  • Acum puteți accesa Weblate pe http://localhost:8000/.

  • Conectați-vă cu acreditările de administrator obținute în timpul instalării sau înregistrați-vă cu utilizatori noi.

  • Acum puteți rula comenzi Weblate folosind comanda weblate atunci când Weblate virtualenv este activ, consultați Comenzi de gestionare.

  • Puteți opri serverul de testare cu Ctrl+C.

  • Review potential issues with your installation either on /manage/performance/ URL (see Interfața de gestionare) or using weblate check --deploy, see Configurarea producției.

Adăugarea traducerii
  1. Deschideți interfața de administrare (http://localhost:8000/create/project/) și creați proiectul pe care doriți să-l traduceți. Consultați proiect pentru mai multe detalii.

    Tot ce trebuie să specificați aici este numele proiectului și site-ul acestuia.

  2. Creați o componentă care este obiectul real al traducerii - aceasta indică depozitul VCS și selectează fișierele care trebuie traduse. Pentru mai multe detalii, consultați Configurația componentei.

    Domeniile importante sunt: Numele componentei, adresa depozitului VCS și masca pentru găsirea fișierelor traductibile. Weblate acceptă o gamă largă de formate, inclusiv fișiere gettext PO, șiruri de resurse Android, proprietăți de șiruri iOS, proprietăți Java sau fișiere Qt Linguist, consultați Formate de fișiere acceptate pentru mai multe detalii.

  3. După ce ați finalizat cele de mai sus (poate fi un proces de lungă durată, în funcție de dimensiunea depozitului VCS și de numărul de mesaje de tradus), puteți începe traducerea.

Instalarea din surse

  1. Vă rugăm să urmați mai întâi instrucțiunile de instalare pentru sistemul dumneavoastră:

  2. Obțineți cele mai recente surse Weblate folosind Git (sau descărcați un tarball și despachetați-l):

    git clone https://github.com/WeblateOrg/weblate.git weblate-src
    

    Alternativ, puteți utiliza arhivele eliberate. Le puteți descărca de pe site-ul nostru <https://weblate.org/>. Aceste descărcări sunt semnate criptografic, vă rugăm să consultați Verificarea semnăturilor de eliberare.

  3. Instalați codul Weblate curent în virtualenv:

    . ~/weblate-env/bin/activate
    pip install -e weblate-src
    
  4. Copiați weblate/settings_example.py în weblate/settings.py.

  5. Ajustați valorile din noul fișier settings.py după bunul plac. Va trebui să furnizați cel puțin credențialele bazei de date și cheia secretă Django, dar veți dori mai multe modificări pentru configurarea de producție, consultați Ajustarea configurației.

  6. Creați baza de date utilizată de Weblate, consultați Configurarea bazei de date pentru Weblate.

  7. Construirea tabelelor Django, a fișierelor statice și a datelor inițiale (a se vedea Completarea bazei de date și Servirea fișierelor statice):

    weblate migrate
    weblate collectstatic
    weblate compress
    weblate compilemessages
    

    Notă

    Acest pas trebuie repetat de fiecare dată când actualizați depozitul.

Instalarea pe OpenShift

Cu șablonul OpenShift Weblate puteți să vă instalați și să vă puneți în funcțiune instanța personală Weblate în câteva secunde. Toate dependențele Weblate sunt deja incluse. PostgreSQL este configurat ca bază de date implicită și sunt utilizate cererile de volum persistente.

Puteți găsi modelul la <https://github.com/WeblateOrg/openshift/>.

Instalare

Următoarele exemple presupun că aveți un mediu OpenShift v3.x funcțional, cu instrumentul client oc instalat. Vă rugăm să consultați documentația OpenShift pentru instrucțiuni.

Fișierul template.yml este potrivit pentru rularea tuturor componentelor în OpenShift. Există, de asemenea, template-external-postgresql.yml care nu pornește un server PostgreSQL și vă permite să configurați un server PostgreSQL extern.

Consola Web

Copiați conținutul brut din template.yml și importați-le în proiectul dumneavoastră, apoi folosiți butonul Create din consola web OpenShift pentru a crea aplicația. Consola web vă va solicita valorile pentru toți parametrii utilizați de șablon.

CLI

Pentru a încărca șablonul Weblate în biblioteca de șabloane a proiectului dvs. curent, treceți fișierul template.yml cu următoarea comandă:

$ oc create -f https://raw.githubusercontent.com/WeblateOrg/openshift/main/template.yml \
   -n <PROJECT>

Șablonul este acum disponibil pentru selecție prin intermediul consolei web sau al CLI.

Parametrii

Parametrii pe care îi puteți suprascrie sunt enumerați în secțiunea Parametrii din șablon. Îi puteți enumera cu ajutorul CLI utilizând următoarea comandă și specificând fișierul care urmează să fie utilizat:

$ oc process --parameters -f https://raw.githubusercontent.com/WeblateOrg/openshift/main/template.yml

# If the template is already uploaded
$ oc process --parameters -n <PROJECT> weblate
Aprovizionare

De asemenea, puteți utiliza CLI pentru a procesa șabloanele și pentru a utiliza configurația generată pentru a crea obiecte imediat.

$ oc process -f https://raw.githubusercontent.com/WeblateOrg/openshift/main/template.yml \
    -p APPLICATION_NAME=weblate \
    -p WEBLATE_VERSION=4.3.1-1 \
    -p WEBLATE_SITE_DOMAIN=weblate.app-openshift.example.com \
    -p POSTGRESQL_IMAGE=docker-registry.default.svc:5000/openshift/postgresql:9.6 \
    -p REDIS_IMAGE=docker-registry.default.svc:5000/openshift/redis:3.2 \
    | oc create -f

Instanța Weblate ar trebui să fie disponibilă după migrarea și implementarea cu succes la parametrul WEBLATE_SITE_DOMAIN specificat.

După configurarea containerului, vă puteți autentifica ca utilizator admin cu parola furnizată în WEBLATE_ADMIN_PASSWORD, sau o parolă aleatorie generată la prima pornire, dacă aceasta nu a fost setată.

Pentru a reseta parola admin, reporniți containerul cu WEBLATE_ADMIN_PASSWORD setat la noua parolă în Secret respectiv.

Eliminați
$ oc delete all -l app=<APPLICATION_NAME>
$ oc delete configmap -l app= <APPLICATION_NAME>
$ oc delete secret -l app=<APPLICATION_NAME>
# ATTTENTION! The following command is only optional and will permanently delete all of your data.
$ oc delete pvc -l app=<APPLICATION_NAME>

$ oc delete all -l app=weblate \
    && oc delete secret -l app=weblate \
    && oc delete configmap -l app=weblate \
    && oc delete pvc -l app=weblate
Configurație

Prin procesarea șablonului se va crea o ConfigMap care poate fi utilizată pentru a personaliza imaginea Weblate. ConfigMap este montat direct ca variabile de mediu și declanșează o nouă implementare de fiecare dată când este modificat. Pentru alte opțiuni de configurare, consultați Variabile de mediu Docker pentru lista completă a variabilelor de mediu.

Instalarea pe Kubernetes

Notă

Acest ghid caută colaboratori cu experiență în Kubernetes pentru a acoperi configurarea în mai multe detalii.

Cu ajutorul graficului Kubernetes Helm puteți să vă instalați și să vă puneți în funcțiune instanța personală Weblate în câteva secunde. Toate dependențele Weblate sunt deja incluse. PostgreSQL este configurat ca bază de date implicită și sunt utilizate cererile de volum persistente.

Puteți găsi graficul la <https://github.com/WeblateOrg/helm/> și poate fi afișat la <https://artifacthub.io/packages/helm/weblate/weblate>.

Instalare
helm repo add weblate https://helm.weblate.org
helm install my-release weblate/weblate
Configurație

Pentru alte opțiuni de configurare, consultați Variabile de mediu Docker pentru lista completă a variabilelor de mediu.

În funcție de configurația și experiența dumneavoastră, alegeți o metodă de instalare adecvată pentru dumneavoastră:

Cerințe software

Sistem de operare

Se știe că Weblate funcționează pe Linux, FreeBSD și macOS. Cel mai probabil vor funcționa și alte sisteme de tip Unix.

Weblate nu este acceptat pe Windows. Dar este posibil să funcționeze în continuare, iar patch-urile sunt acceptate cu plăcere.

Alte servicii

Weblate utilizează alte servicii pentru funcționarea sa. Veți avea nevoie ca cel puțin următoarele servicii să funcționeze:

Dependențe Python

Weblate este scris în Python și suportă Python 3.6 sau o versiune mai nouă. Puteți instala dependențele folosind pip sau din pachetele de distribuție, lista completă este disponibilă în requirements.txt.

Cele mai notabile dependențe:

Django

https://www.djangoproject.com/

Celery

https://docs.celeryproject.org/

Traducere Toolkit

https://toolkit.translatehouse.org/

traducător-finder

https://github.com/WeblateOrg/translation-finder

Python Social Auth

https://python-social-auth.readthedocs.io/

Cadrul Django REST

https://www.django-rest-framework.org/

Dependențe opționale

Următoarele module sunt necesare pentru anumite caracteristici ale Weblate. Le puteți găsi pe toate în requirements-optional.txt.

Mercurial (optional for Mercurial repositories support)

https://www.mercurial-scm.org/

phply (optional for Șiruri PHP)

https://github.com/viraptor/phply

tesserocr (optional for OCR in Context vizual pentru șiruri de caractere)

https://github.com/sirfz/tesserocr

python-akismet (optional for Protecția împotriva spam-ului)

https://github.com/Nekmo/python-akismet

ruamel.yaml (opțional pentru Fișiere YAML)

https://pypi.org/project/ruamel.yaml/

Zeep (opțional pentru ms-terminologie`)

https://docs.python-zeep.org/

aeidon (opțional pentru Fișiere de subtitrare)

https://pypi.org/project/aeidon/

fluent.syntax (optional for Format fluent)

https://projectfluent.org/

Sugestie

When installing using pip, you can directly specify desired features when installing:

pip install "Weblate[PHP,Fluent]"

Or you can install Weblate will all optional features:

pip install "Weblate[all]"

Or you can install Weblate without any optional features:

pip install Weblate

https://pypi.org/project/aeidon/

Weblate suportă PostgreSQL, MySQL și MariaDB, consultați Configurarea bazei de date pentru Weblate și documentația backends pentru mai multe detalii.

Alte cerințe de sistem

Următoarele dependențe trebuie să fie instalate pe sistem:

Git

https://git-scm.com/

Pango, Cairo și fișierele antet aferente și datele de introspecție gir

https://cairographics.org/, https://pango.gnome.org/, vezi Pango și Cairo

git-review (opțional pentru suport Gerrit)

https://pypi.org/project/git-review/

git-svn (opțional pentru suport pentru Subversion)

https://git-scm.com/docs/git-svn

tesseract și datele sale (opțional pentru OCR-ul capturilor de ecran)

https://github.com/tesseract-ocr/tesseract

licensee (opțional pentru detectarea licenței la crearea componentei)

https://github.com/licensee/licensee

Dependențe în timp de construcție

Pentru a construi unele dintre Dependențe Python, ar putea fi necesar să instalați dependențele acestora. Acest lucru depinde de modul în care le instalați, așa că vă rugăm să consultați pachetele individuale pentru documentație. Nu veți avea nevoie de acestea dacă folosiți Wheels preinstalate în timp ce instalați folosind pip sau când folosiți pachete de distribuție.

Pango și Cairo

Schimbat în versiunea 3.7.

Weblate folosește Pango și Cairo pentru redarea widget-urilor bitmap (vezi Promovarea traducerii) și pentru redarea verificărilor (vezi Gestionarea fonturilor). Pentru a instala corect legăturile Python pentru acestea, trebuie să instalați mai întâi bibliotecile de sistem - aveți nevoie atât de Cairo, cât și de Pango, care la rândul lor au nevoie de GLib. Toate acestea ar trebui să fie instalate împreună cu fișierele de dezvoltare și datele de introspecție GObject.

Verificarea semnăturilor de eliberare

Versiunile Weblate sunt semnate criptografic de către dezvoltatorul care le-a lansat. În prezent, acesta este Michal Čihař. Amprenta digitală a cheii sale PGP este:

63CB 1DF1 EF12 CF2A C0EE 5A32 9C27 B313 42B7 511D

și puteți obține mai multe informații de identificare de la <https://keybase.io/nijel>.

Trebuie să verificați dacă semnătura corespunde arhivei pe care ați descărcat-o. În acest fel, puteți fi sigur că utilizați același cod care a fost lansat. De asemenea, ar trebui să verificați data semnăturii pentru a vă asigura că ați descărcat cea mai recentă versiune.

Fiecare arhivă este însoțită de fișiere .asc care conțin semnătura PGP pentru aceasta. Odată ce le aveți pe amândouă în același dosar, puteți verifica semnătura:

$ gpg --verify Weblate-3.5.tar.xz.asc
gpg: assuming signed data in 'Weblate-3.5.tar.xz'
gpg: Signature made Ne 3. března 2019, 16:43:15 CET
gpg:                using RSA key 87E673AF83F6C3A0C344C8C3F4AA229D4D58C245
gpg: Can't check signature: public key not found

După cum puteți vedea, GPG se plânge că nu cunoaște cheia publică. În acest moment, trebuie să efectuați unul dintre următorii pași:

  • Utilizați wkd pentru a descărca cheia:

$ gpg --auto-key-locate wkd --locate-keys michal@cihar.com
pub   rsa4096 2009-06-17 [SC]
      63CB1DF1EF12CF2AC0EE5A329C27B31342B7511D
uid           [ultimate] Michal Čihař <michal@cihar.com>
uid           [ultimate] Michal Čihař <nijel@debian.org>
uid           [ultimate] [jpeg image of size 8848]
uid           [ultimate] Michal Čihař (Braiins) <michal.cihar@braiins.cz>
sub   rsa4096 2009-06-17 [E]
sub   rsa4096 2015-09-09 [S]
  • Descărcați keyring-ul de pe serverul Michal’s, apoi importați-l cu:

$ gpg --import wmxth3chu9jfxdxywj1skpmhsj311mzm
  • Descărcați și importați cheia de pe unul dintre serverele de chei:

$ gpg --keyserver hkp://pgp.mit.edu --recv-keys 87E673AF83F6C3A0C344C8C3F4AA229D4D58C245
gpg: key 9C27B31342B7511D: "Michal Čihař <michal@cihar.com>" imported
gpg: Total number processed: 1
gpg:              unchanged: 1

Acest lucru va îmbunătăți puțin situația - în acest moment puteți verifica dacă semnătura din cheia dată este corectă, dar tot nu puteți avea încredere în numele folosit în cheie:

$ gpg --verify Weblate-3.5.tar.xz.asc
gpg: assuming signed data in 'Weblate-3.5.tar.xz'
gpg: Signature made Ne 3. března 2019, 16:43:15 CET
gpg:                using RSA key 87E673AF83F6C3A0C344C8C3F4AA229D4D58C245
gpg: Good signature from "Michal Čihař <michal@cihar.com>" [ultimate]
gpg:                 aka "Michal Čihař <nijel@debian.org>" [ultimate]
gpg:                 aka "[jpeg image of size 8848]" [ultimate]
gpg:                 aka "Michal Čihař (Braiins) <michal.cihar@braiins.cz>" [ultimate]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 63CB 1DF1 EF12 CF2A C0EE  5A32 9C27 B313 42B7 511D

Problema aici este că oricine ar putea emite cheia cu acest nume. Trebuie să vă asigurați că cheia este deținută efectiv de persoana menționată. Manualul de confidențialitate GNU tratează acest subiect în capitolul Validarea altor chei de pe brelocul de chei publice. Cea mai fiabilă metodă este să vă întâlniți personal cu dezvoltatorul și să faceți schimb de amprente ale cheii, însă vă puteți baza și pe rețeaua de încredere. În acest fel, puteți avea încredere în cheie în mod tranzitoriu prin intermediul semnăturilor altor persoane, care au întâlnit dezvoltatorul în persoană.

Odată ce cheia este de încredere, avertismentul nu va mai apărea:

$ gpg --verify Weblate-3.5.tar.xz.asc
gpg: assuming signed data in 'Weblate-3.5.tar.xz'
gpg: Signature made Sun Mar  3 16:43:15 2019 CET
gpg:                using RSA key 87E673AF83F6C3A0C344C8C3F4AA229D4D58C245
gpg: Good signature from "Michal Čihař <michal@cihar.com>" [ultimate]
gpg:                 aka "Michal Čihař <nijel@debian.org>" [ultimate]
gpg:                 aka "[jpeg image of size 8848]" [ultimate]
gpg:                 aka "Michal Čihař (Braiins) <michal.cihar@braiins.cz>" [ultimate]

În cazul în care semnătura nu este valabilă (arhiva a fost modificată), veți primi o eroare clară, indiferent dacă cheia este de încredere sau nu:

$ gpg --verify Weblate-3.5.tar.xz.asc
gpg: Signature made Sun Mar  3 16:43:15 2019 CET
gpg:                using RSA key 87E673AF83F6C3A0C344C8C3F4AA229D4D58C245
gpg: BAD signature from "Michal Čihař <michal@cihar.com>" [ultimate]

Permisiunile sistemului de fișiere

Procesul Weblate trebuie să fie capabil să citească și să scrie în directorul în care păstrează datele - DATA_DIR. Toate fișierele din acest director trebuie să fie deținute și scriere de către utilizatorul care rulează toate procesele Weblate (de obicei WSGI și Celery, a se vedea Rularea serverului și Sarcini de fundal folosind Celery).

Configurația implicită le plasează în același arbore ca și sursele Weblate, însă ați putea prefera să le mutați într-o locație mai bună, cum ar fi: /var/lib/weblate.

Weblate încearcă să creeze aceste directoare în mod automat, dar nu va reuși dacă nu are permisiuni pentru a face acest lucru.

De asemenea, trebuie să aveți grijă când rulați Comenzi de gestionare, deoarece acestea ar trebui să fie rulate sub același utilizator cu cel care rulează Weblate însuși, altfel permisiunile pentru unele fișiere ar putea fi greșite.

În containerul Docker, toate fișierele din volumul /app/data trebuie să fie deținute de utilizatorul weblate din container (UID 1000).

Configurarea bazei de date pentru Weblate

Se recomandă ca Weblate să ruleze cu un server de baze de date PostgreSQL.

PostgreSQL

PostgreSQL este, de obicei, cea mai bună alegere pentru site-urile bazate pe Django. Este baza de date de referință utilizată pentru implementarea stratului de baze de date Django.

Notă

Weblate utilizează extensia Trigram, care trebuie instalată separat în unele cazuri. Căutați postgresql-contrib sau un pachet cu nume similar.

Vezi și

PostgreSQL notes

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 --superuser --pwprompt weblate

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

Sugestie

Dacă nu doriți să faceți din utilizatorul Weblate un superutilizator în PostgreSQL, puteți omite acest lucru. În acest caz, va trebui să efectuați manual unele dintre etapele de migrare ca superutilizator PostgreSQL în schema pe care o va folosi Weblate:

CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA weblate;
Configurarea Weblate pentru a utiliza PostgreSQL

Fragmentul settings.py pentru PostgreSQL:

DATABASES = {
    "default": {
        # Database engine
        "ENGINE": "django.db.backends.postgresql",
        # Database name
        "NAME": "weblate",
        # Database user
        "USER": "weblate",
        # Name of role to alter to set parameters in PostgreSQL,
        # use in case role name is different than user used for authentication.
        # "ALTER_ROLE": "weblate",
        # Database password
        "PASSWORD": "password",
        # Set to empty string for localhost
        "HOST": "database.example.com",
        # Set to empty string for default
        "PORT": "",
    }
}

Migrarea bazei de date efectuează ALTER ROLE pe rolul bazei de date utilizat de Weblate. În cele mai multe cazuri, numele rolului se potrivește cu numele de utilizator. În configurațiile mai complexe, numele rolului este diferit de numele de utilizator și veți primi o eroare privind inexistența rolului în timpul migrării bazei de date (psycopg2.errors.UndefinedObject: role "weblate@hostname" does not exist). Se știe că acest lucru se întâmplă cu Azure Database pentru PostgreSQL, dar nu se limitează la acest mediu. Vă rugăm să setați ALTER_ROLE pentru a schimba numele rolului pe care Weblate ar trebui să îl modifice în timpul migrării bazei de date.

MySQL și MariaDB

Sugestie

Unele caracteristici Weblate vor funcționa mai bine cu PostgreSQL. Aceasta include căutarea și memoria de traducere, care utilizează ambele caracteristici full-text în baza de date, iar implementarea PostgreSQL este superioară.

Weblate poate fi folosit și cu MySQL sau MariaDB, vă rugăm să consultați MySQL notes și MariaDB notes pentru avertismente legate de utilizarea Django cu acestea. Din cauza limitărilor, se recomandă să folosiți PostgreSQL pentru noile instalări.

Weblate necesită MySQL cel puțin 5.7.8 sau MariaDB cel puțin 10.2.7.

Următoarea configurație este recomandată pentru Weblate:

  • Utilizați setul de caractere utf8mb4 pentru a permite reprezentarea planurilor Unicode superioare (de exemplu, emojis).

  • Configurați serverul cu innodb_large_prefix pentru a permite indici mai lungi pentru câmpurile text.

  • Setați nivelul de izolare la READ COMMITTED.

  • Modul SQL trebuie să fie setat la STRICT_TRANS_TABLES.

MySQL 8.x, MariaDB 10.5.x sau mai nou au o configurație implicită rezonabilă, astfel încât nu ar trebui să fie necesară nicio modificare a serverului și tot ceea ce este necesar poate fi configurat pe partea de client.

Mai jos este un exemplu de /etc/my.cnf.d/server.cnf pentru un server cu 8 GB de RAM. Aceste setări ar trebui să fie suficiente pentru majoritatea instalațiilor. MySQL și MariaDB au reglaje care vor crește performanțele serverului, care sunt considerate a nu fi necesare decât dacă plănuiți să aveți un număr mare de utilizatori simultani care să acceseze sistemul. Consultați documentația diferiților furnizori pentru aceste detalii.

Este absolut esențial, pentru a reduce problemele la instalare, ca setarea innodb_file_per_table să fie setată corect și MySQL/MariaDB să fie repornit înainte de a începe instalarea Weblate.

[mysqld]
character-set-server = utf8mb4
character-set-client = utf8mb4
collation-server = utf8mb4_unicode_ci

datadir=/var/lib/mysql

log-error=/var/log/mariadb/mariadb.log

innodb_large_prefix=1
innodb_file_format=Barracuda
innodb_file_per_table=1
innodb_buffer_pool_size=2G
sql_mode=STRICT_TRANS_TABLES

Sugestie

În cazul în care primiți eroarea #1071 - Cheia specificată a fost prea lungă; lungimea maximă a cheii este de 767 octeți, vă rugăm să vă actualizați configurația pentru a include setările innodb de mai sus și să reporniți instalarea.

Sugestie

În cazul în care primiți eroarea #2006 - MySQL server has gone away, configurarea CONN_MAX_AGE v-ar putea ajuta.

Configurarea Weblate pentru a utiliza MySQL/MariaDB

Fragmentul settings.py pentru MySQL și MariaDB:

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": "127.0.0.1",
        # Set to empty string for default
        "PORT": "3306",
        # In case you wish to use additional
        # connection options
        "OPTIONS": {},
    }
}

De asemenea, trebuie să creați contul de utilizator weblate în MySQL sau MariaDB înainte de a începe instalarea. Utilizați comenzile de mai jos pentru a realiza acest lucru:

GRANT ALL ON weblate.* to 'weblate'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Alte configurații

Configurarea e-mailului de ieșire

Weblate trimite e-mailuri cu diferite ocazii - pentru activarea contului și la diferite notificări configurate de utilizatori. Pentru aceasta are nevoie de acces la un server SMTP.

Configurarea serverului de poștă electronică este configurată cu ajutorul acestor setări: EMAIL_HOST, EMAIL_HOST_PASSWORD, EMAIL_USE_TLS, EMAIL_USE_SSL, EMAIL_HOST_USER și EMAIL_PORT. Numele lor sunt destul de explicite, dar puteți găsi mai multe informații în documentația Django.

Sugestie

În cazul în care primiți o eroare de autentificare neacceptată (de exemplu SMTP AUTH extension not supported by server), cel mai probabil aceasta este cauzată de utilizarea unei conexiuni nesigure și serverul refuză să se autentifice în acest mod. Încercați să activați EMAIL_USE_TLS în acest caz.

Rularea în spatele unui proxy invers

Mai multe funcții din Weblate se bazează pe posibilitatea de a obține adresa IP a clientului. Printre acestea se numără Limitarea ratei, Protecția împotriva spam-ului sau Jurnal de audit.

În configurația implicită, Weblate analizează adresa IP din REMOTE_ADDR care este setată de gestionarul WSGI.

În cazul în care utilizați un proxy invers, acest câmp va conține, cel mai probabil, adresa acestuia. Trebuie să configurați Weblate pentru a avea încredere în antetele HTTP suplimentare și să analizați adresa IP din acestea. Acest lucru nu poate fi activat în mod implicit, deoarece ar permite falsificarea adresei IP pentru instalațiile care nu utilizează un proxy invers. Activarea IP_BEHIND_REVERSE_PROXY ar putea fi suficientă pentru cele mai obișnuite configurații, dar poate fi necesar să ajustați IP_PROXY_HEADER și IP_PROXY_OFFSET.

HTTP proxy

Weblate execută comenzi VCS și acceptă configurația proxy din mediul înconjurător. Abordarea recomandată este de a defini setările proxy în settings.py:

import os

os.environ["http_proxy"] = "http://proxy.example.com:8080"
os.environ["HTTPS_PROXY"] = "http://proxy.example.com:8080"

Ajustarea configurației

Copiați weblate/settings_example.py în weblate/settings.py și ajustați-l pentru a se potrivi cu configurația dumneavoastră. Probabil că veți dori să ajustați următoarele opțiuni:

ADMINS

Lista de administratori de site care trebuie să primească notificări atunci când ceva nu merge bine, de exemplu, notificări privind fuziunile eșuate sau erorile Django.

ALLOWED_HOSTS

Trebuie să setați acest lucru pentru a lista gazdele pe care site-ul tău trebuie să le deservească. De exemplu:

ALLOWED_HOSTS = ["demo.weblate.org"]

Alternativ, puteți include caractere wildcard:

ALLOWED_HOSTS = ["*"]

SESSION_ENGINE

Configurați modul în care vor fi stocate sesiunile dvs. În cazul în care păstrați motorul implicit al bazei de date backend, ar trebui să programați: weblate clearsessions pentru a elimina din baza de date datele vechi ale sesiunilor.

Dacă utilizați Redis ca memorie cache (a se vedea Activați memoria cache), este recomandat să o utilizați și pentru sesiuni:

SESSION_ENGINE = "django.contrib.sessions.backends.cache"

DATABASES

Conectivitatea la serverul de baze de date, vă rugăm să consultați documentația Django pentru mai multe detalii.

DEBUG

Dezactivați acest lucru pentru orice server de producție. Cu modul de depanare activat, Django va arăta utilizatorilor backtraces în caz de eroare, când îl dezactivați, erorile vor fi trimise prin e-mail către ADMINS (vezi mai sus).

Modul de depanare încetinește, de asemenea, Weblate, deoarece Django stochează mult mai multe informații pe plan intern în acest caz.

DEFAULT_FROM_EMAIL

Adresa de e-mail a expeditorului pentru e-mailurile de ieșire, de exemplu e-mailurile de înregistrare.

SECRET_KEY

Cheia folosită de Django pentru a semna unele informații în cookie-uri, vezi Cheia secretă Django pentru mai multe informații.

Vezi și

SECRET_KEY

SERVER_EMAIL

E-mail utilizat ca adresă de expeditor pentru trimiterea de e-mailuri către administrator, de exemplu notificări privind fuziunile eșuate.

Vezi și

SERVER_EMAIL

Completarea bazei de date

După ce configurația ta este gata, poți rula weblate migrate pentru a crea structura bazei de date. Acum ar trebui să poți crea proiecte de traducere folosind interfața de administrare.

În cazul în care doriți să executați o instalare neinteractivă, puteți utiliza weblate migrate --noinput, iar apoi să creați un utilizator administrator utilizând comanda createadmin.

După ce ați terminat, ar trebui, de asemenea, să verificați Raportul de performanță din interfața de administrare, care vă va oferi indicii cu privire la o potențială configurație neoptimă a site-ului dumneavoastră.

Configurarea producției

Pentru o configurație de producție, trebuie să efectuați ajustările descrise în secțiunile următoare. Cele mai critice setări vor declanșa un avertisment, care este indicat printr-un semn de exclamare în bara de sus dacă sunteți conectat ca superutilizator:

_images/admin-wrench.png

De asemenea, se recomandă să inspectați verificările declanșate de Django (deși s-ar putea să nu fie nevoie să le reparați pe toate):

weblate check --deploy

De asemenea, puteți examina aceeași listă de verificare din Interfața de gestionare.

Dezactivați modul de depanare

Dezactivați modul de depanare al lui Django (DEBUG) prin:

DEBUG = False

Cu modul de depanare activat, Django stochează toate interogările executate și arată utilizatorilor traseele erorilor, ceea ce nu este de dorit într-o configurație de producție.

Configurați în mod corespunzător administratorii

Setați adresele de administrator corecte în setarea ADMINS pentru a defini cine va primi e-mailuri în cazul în care ceva nu merge bine pe server, de exemplu:

ADMINS = (("Your Name", "your_email@example.com"),)

Setați domeniul corect al site-ului

Ajustați numele site-ului și domeniul în interfața de administrare, altfel linkurile din RSS sau din e-mailurile de înregistrare nu vor funcționa. Acest lucru este configurat cu ajutorul SITE_DOMAIN care trebuie să conțină numele domeniului site-ului.

Schimbat în versiunea 4.2: Înainte de versiunea 4.2, a fost folosit în schimb cadrul Django sites, consultați The “sites” framework.

Configurați corect HTTPS

Se recomandă cu tărie să executați Weblate utilizând protocolul HTTPS criptat. După ce îl activați, trebuie să setați ENABLE_HTTPS în setări:

ENABLE_HTTPS = True

Sugestie

Este posibil să doriți să configurați și HSTS, consultați SSL/HTTPS pentru mai multe detalii.

Setați corect SECURE_HSTS_SECONDS

Dacă site-ul tău este servit prin SSL, trebuie să ai în vedere setarea unei valori pentru SECURE_HSTS_SECONDS în settings.py pentru a activa HTTP Strict Transport Security. În mod implicit, este setată la 0, așa cum se arată mai jos.

SECURE_HSTS_SECONDS = 0

Dacă este setat la o valoare întreagă diferită de zero, django.middleware.security.SecurityMiddleware setează antetul HTTP Strict Transport Security pe toate răspunsurile care nu îl au deja.

Atenționare

Setarea incorectă a acestui parametru vă poate distruge ireversibil (pentru o perioadă de timp) site-ul. Citiți mai întâi documentația HTTP Strict Transport Security.

Utilizați un motor de baze de date puternic

  • Vă rugăm să folosiți PostgreSQL pentru un mediu de producție, consultați Configurarea bazei de date pentru Weblate pentru mai multe informații.

  • Folosiți o locație adiacentă pentru a rula serverul de baze de date, în caz contrar performanța sau fiabilitatea rețelei ar putea să vă distrugă experiența Weblate.

  • Verificați performanța serverului de baze de date sau modificați configurația acestuia, de exemplu folosind PGTune.

Activați memoria cache

Dacă este posibil, utilizați Redis din Django prin ajustarea variabilei de configurare CACHES, de exemplu:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/0",
        # If redis is running on same host as Weblate, you might
        # want to use unix sockets instead:
        # 'LOCATION': 'unix:///var/run/redis/redis.sock?db=0',
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "PARSER_CLASS": "redis.connection.HiredisParser",
        },
    }
}

Sugestie

În cazul în care modificați setările Redis pentru memoria cache, este posibil să trebuiască să le ajustați și pentru Celery, consultați Sarcini de fundal folosind Celery.

Avatar în memoria cache

În plus față de memoria cache a lui Django, Weblate realizează și memoria cache a avatarelor. În acest scop, se recomandă utilizarea unui cache separat, susținut de fișiere:

CACHES = {
    "default": {
        # Default caching backend setup, see above
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "unix:///var/run/redis/redis.sock?db=0",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "PARSER_CLASS": "redis.connection.HiredisParser",
        },
    },
    "avatar": {
        "BACKEND": "django.core.cache.backends.filebased.FileBasedCache",
        "LOCATION": os.path.join(DATA_DIR, "avatar-cache"),
        "TIMEOUT": 604800,
        "OPTIONS": {
            "MAX_ENTRIES": 1000,
        },
    },
}

Configurați trimiterea de e-mailuri

Weblate trebuie să trimită e-mailuri în mai multe ocazii, iar aceste e-mailuri trebuie să aibă o adresă de expeditor corectă, vă rugăm să configurați SERVER_EMAIL și DEFAULT_FROM_EMAIL pentru a se potrivi cu mediul dumneavoastră, de exemplu:

SERVER_EMAIL = "admin@example.org"
DEFAULT_FROM_EMAIL = "weblate@example.org"

Notă

Pentru a dezactiva trimiterea de e-mailuri prin Weblate, setați EMAIL_BACKEND la django.core.mail.backends.dummy.EmailBackend.

Acest lucru va dezactiva toată livrarea de e-mailuri, inclusiv e-mailurile de înregistrare sau de resetare a parolei.

Configurarea gazdelor permise

Django are nevoie ca ALLOWED_HOSTS să conțină o listă de nume de domenii pe care site-ul tău are voie să le servească, dacă o lași goală va bloca orice cerere.

În cazul în care acesta nu este configurat pentru a se potrivi cu serverul dumneavoastră HTTP, veți primi erori de tipul Invalid HTTP_HOST header: '1.1.1.1.1'. Este posibil fie necesar adăugați '1.1.1.1.1' la ALLOWED_HOSTS.

Sugestie

Pe containerul Docker, acest lucru este disponibil ca WEBLATE_ALLOWED_HOSTS.

Cheia secretă Django

Setarea SECRET_KEY este folosită de Django pentru a semna cookie-urile și ar trebui să vă generați propria valoare, mai degrabă decât să o folosiți pe cea din exemplul de configurare.

Puteți genera o cheie nouă utilizând weblate/examples/generate-secret-key livrat cu Weblate.

Director acasă

Schimbat în versiunea 2.1: Acest lucru nu mai este necesar, Weblate stochează acum toate datele sale în DATA_DIR.

Directorul principal al utilizatorului care rulează Weblate trebuie să existe și să poată fi scris de către acest utilizator. Acest lucru este necesar în special dacă doriți să utilizați SSH pentru a accesa depozite private, dar este posibil ca și Git să aibă nevoie să acceseze acest director (în funcție de versiunea Git pe care o utilizați).

Puteți schimba directorul utilizat de Weblate în settings.py, de exemplu, pentru a-l seta în directorul configuration din cadrul arborelui Weblate:

os.environ["HOME"] = os.path.join(BASE_DIR, "configuration")

Notă

Pe Linux și pe alte sisteme de tip UNIX, calea către directorul de domiciliu al utilizatorului este definită în /etc/passwd. Multe distribuții folosesc în mod implicit un director care nu poate fi scris pentru utilizatorii folosiți pentru a servi conținut web (cum ar fi apache, www-data sau wwwrun), așa că trebuie fie să rulați Weblate sub un alt utilizator, fie să modificați această setare.

Încărcarea șablonului

Se recomandă utilizarea unui încărcător de șabloane în cache pentru Django. Acesta pune în cache șabloanele analizate și evită necesitatea de a face analiza la fiecare cerere. Îl puteți configura folosind următorul fragment (setarea loaders este importantă aici):

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [
            os.path.join(BASE_DIR, "templates"),
        ],
        "OPTIONS": {
            "context_processors": [
                "django.contrib.auth.context_processors.auth",
                "django.template.context_processors.debug",
                "django.template.context_processors.i18n",
                "django.template.context_processors.request",
                "django.template.context_processors.csrf",
                "django.contrib.messages.context_processors.messages",
                "weblate.trans.context_processors.weblate_context",
            ],
            "loaders": [
                (
                    "django.template.loaders.cached.Loader",
                    [
                        "django.template.loaders.filesystem.Loader",
                        "django.template.loaders.app_directories.Loader",
                    ],
                ),
            ],
        },
    },
]

Executarea sarcinilor de întreținere

Pentru o performanță optimă, este o idee bună să executați unele sarcini de întreținere în fundal. Acest lucru este acum făcut automat de Sarcini de fundal folosind Celery și acoperă următoarele sarcini:

  • Verificarea stării de sănătate a configurației (din oră în oră).

  • Angajarea modificărilor în așteptare (din oră în oră), a se vedea Angajări leneșe și commit_pending.

  • Actualizarea alertelor privind componentele (zilnic).

  • Actualizarea ramurilor la distanță (noaptea), vezi AUTO_UPDATE.

  • Copie de rezervă a memoriei de traducere în JSON (zilnic), a se vedea dump_memory.

  • Sarcini de întreținere a textului complet și a bazei de date (sarcini zilnice și săptămânale), a se vedea cleanuptrans.

Schimbat în versiunea 3.2: Începând cu versiunea 3.2, modalitatea implicită de executare a acestor sarcini este utilizarea Celery, iar Weblate vine deja cu o configurație corespunzătoare, vezi Sarcini de fundal folosind Celery.

Locațiile și codificarea sistemului

Locațiile de sistem trebuie configurate cu cele care acceptă UTF-8. Pe majoritatea distribuțiilor Linux, aceasta este setarea implicită. În cazul în care nu este cazul în sistemul dumneavoastră, vă rugăm să schimbați localele în varianta UTF-8.

De exemplu, prin editarea /etc/default/locale și setarea acolo LANG="C.UTF-8".

În unele cazuri, serviciile individuale au o configurație separată pentru localități. Acest lucru variază în funcție de distribuție și de serverele web, așa că verifică documentația pachetelor serverului tău web.

Apache pe Ubuntu utilizează /etc/apache2/envvvars:

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'

Apache pe CentOS utilizează /etc/sysconfig/httpd (sau /opt/rh/httpd24/root/etc/sysconfig/httpd):

LANG='en_US.UTF-8'

Utilizarea autorității de certificare personalizate

Weblate verifică certificatele SSL în timpul solicitărilor HTTP. În cazul în care utilizați o autoritate de certificare personalizată care nu este de încredere în pachetele implicite, va trebui să adăugați certificatul său ca fiind de încredere.

Abordarea preferată este de a face acest lucru la nivel de sistem, vă rugăm să verificați documentația distribuției dumneavoastră pentru mai multe detalii (de exemplu, pe debian, acest lucru se poate face prin plasarea certificatului CA în /usr/local/share/ca-certificates/ și rularea update-ca-certificates).

Odată ce acest lucru este făcut, instrumentele de sistem vor avea încredere în certificat, inclusiv Git.

Pentru codul Python, va trebui să configurați cererile pentru a utiliza pachetul CA de sistem în loc de cel livrat împreună cu acesta. Acest lucru poate fi realizat prin plasarea următorului fragment în settings.py (calea este specifică Debian):

import os

os.environ["REQUESTS_CA_BUNDLE"] = "/etc/ssl/certs/ca-certificates.crt"

Comprimarea activelor clienților

Weblate vine cu o mulțime de fișiere JavaScript și CSS. Din motive de performanță, este bine să le comprimați înainte de a le trimite către un client. În configurația implicită, acest lucru se face din mers, cu un mic cost suplimentar. În cazul instalațiilor mari, se recomandă activarea modului de compresie offline. Acest lucru trebuie făcut în configurație, iar compresia trebuie să fie declanșată la fiecare actualizare Weblate.

Comutarea configurației este simplă prin activarea django.conf.settings.COMPRESS_OFFLINE și prin configurarea django.conf.settings.COMPRESS_OFFLINE_CONTEXT (aceasta din urmă este deja inclusă în configurația de exemplu):

COMPRESS_OFFLINE = True

La fiecare implementare trebuie să comprimați fișierele pentru a se potrivi cu versiunea curentă:

weblate compress

Sugestie

Imaginea oficială Docker are această funcție deja activată.

Rularea serverului

Sugestie

În cazul în care nu aveți experiență cu serviciile descrise mai jos, ați putea încerca Instalarea folosind Docker.

Veți avea nevoie de mai multe servicii pentru a rula Weblate, configurația recomandată constă în:

Notă

Există unele dependențe între servicii, de exemplu, memoria cache și baza de date trebuie să ruleze la pornirea proceselor Celery sau uwsgi.

În cele mai multe cazuri, veți rula toate serviciile pe un singur server (virtual), dar în cazul în care instalația dvs. este foarte încărcată, puteți împărți serviciile. Singura limitare în acest sens este că serverele Celery și Wsgi au nevoie de acces la DATA_DIR.

Notă

Procesul WSGI trebuie să fie executat sub același utilizator ca și procesul Celery, în caz contrar fișierele din DATA_DIR vor fi stocate cu proprietate mixtă, ceea ce duce la probleme în timpul execuției.

A se vedea Permisiunile sistemului de fișiere și Sarcini de fundal folosind Celery.

Rularea serverului web

Rularea Weblate nu este diferită de rularea oricărui alt program bazat pe Django. Acesta este de obicei executat ca uWSGI sau fcgi (a se vedea mai jos exemple pentru diferite servere web).

În scopuri de testare, puteți utiliza serverul web încorporat în Django:

weblate runserver

Atenționare

NU FOLOSIȚI ACEST SERVER ÎNTR-UN MEDIU DE PRODUCȚIE. Acesta nu a fost supus unor audituri de securitate sau teste de performanță. Consultați, de asemenea, documentația Django privind runserver.

Sugestie

Serverul încorporat Django servește fișiere statice doar cu DEBUG activat, deoarece este destinat doar pentru dezvoltare. Pentru utilizarea în producție, vă rugăm să consultați configurările wsgi în Exemplu de configurare pentru NGINX și uWSGI, Exemplu de configurare pentru Apache, Exemplu de configurare pentru Apache și Gunicorn și Servirea fișierelor statice.

Servirea fișierelor statice

Schimbat în versiunea 2.4: Înainte de versiunea 2.4, Weblate nu folosea în mod corespunzător cadrul de fișiere statice Django, iar configurarea era mai complexă.

Django trebuie să adune fișierele statice într-un singur director. Pentru a face acest lucru, executați weblate collectstatic --noinput. Aceasta va copia fișierele statice într-un director specificat de setarea STATIC_ROOT (acesta este implicit un director static în interiorul DATA_DIR).

Se recomandă să serviți fișiere statice direct de pe serverul dvs. web, ar trebui să folosiți acest lucru pentru următoarele căi:

:fișier:`/static/`

Servește fișiere statice pentru Weblate și interfața de administrare (din cele definite de STATIC_ROOT).

:fișier:`/media/`

Utilizat pentru încărcarea de conținut media de către utilizator (de exemplu, capturi de ecran).

:fișier:`/favicon.ico`

Ar trebui să fie rescrisă pentru a rescrie o regulă pentru a servi /static/favicon.ico.

Politica de securitate a conținutului

Configurația implicită Weblate activează middleware-ul weblate.middleware.SecurityMiddleware care stabilește antetele HTTP legate de securitate, cum ar fi Content-Security-Policy sau X-XSS-Protection. Acestea sunt setate în mod implicit pentru a funcționa cu Weblate și cu configurația sa, dar s-ar putea să fie nevoie de o personalizare pentru mediul dumneavoastră.

Exemplu de configurare pentru NGINX și uWSGI

Pentru a rula serverul web de producție, utilizați învelișul wsgi instalat împreună cu Weblate (în cazul mediului virtual, acesta este instalat ca ~/weblate-env/lib/python3.7/site-packages/weblate/wsgi.py). Nu uitați să setați și calea de căutare Python în mediul virtual (de exemplu, folosind virtualenv = /home/user/weblate-env în uWSGI).

Următoarea configurație rulează Weblate ca uWSGI sub serverul web NGINX.

Configurație pentru NGINX (disponibilă și sub forma weblate/examples/weblate.nginx.conf):

# This example assumes Weblate is installed in virtualenv in /home/weblate/weblate-env
# and DATA_DIR is set to /home/weblate/data, please adjust paths to match your setup.
server {
    listen 80;
    server_name weblate;
    # Not used
    root /var/www/html;

    location ~ ^/favicon.ico$ {
        # DATA_DIR/static/favicon.ico
        alias /home/weblate/data/static/favicon.ico;
        expires 30d;
    }

    location /static/ {
        # DATA_DIR/static/
        alias /home/weblate/data/static/;
        expires 30d;
    }

    location /media/ {
        # DATA_DIR/media/
        alias /home/weblate/data/media/;
        expires 30d;
    }

    location / {
        include uwsgi_params;
        # Needed for long running operations in admin interface
        uwsgi_read_timeout 3600;
        # Adjust based to uwsgi configuration:
        uwsgi_pass unix:///run/uwsgi/app/weblate/socket;
        # uwsgi_pass 127.0.0.1:8080;
    }
}

Configurație pentru uWSGI (disponibilă și sub forma weblate/examples/weblate.uwsgi.ini):

# This example assumes Weblate is installed in virtualenv in /home/weblate/weblate-env
# and DATA_DIR is set to /home/weblate/data, please adjust paths to match your setup.
[uwsgi]
plugins       = python3
master        = true
protocol      = uwsgi
socket        = 127.0.0.1:8080
wsgi-file     = /home/weblate/weblate-env/lib/python3.9/site-packages/weblate/wsgi.py

# Add path to Weblate checkout if you did not install
# Weblate by pip
# python-path   = /path/to/weblate

# In case you're using virtualenv uncomment this:
virtualenv = /home/weblate/weblate-env

# Needed for OAuth/OpenID
buffer-size   = 8192

# Reload when consuming too much of memory
reload-on-rss = 250

# Increase number of workers for heavily loaded sites
workers       = 8

# Enable threads for Sentry error submission
enable-threads = true

# Child processes do not need file descriptors
close-on-exec = true

# Avoid default 0000 umask
umask = 0022

# Run as weblate user
uid = weblate
gid = weblate

# Enable harakiri mode (kill requests after some time)
# harakiri = 3600
# harakiri-verbose = true

# Enable uWSGI stats server
# stats = :1717
# stats-http = true

# Do not log some errors caused by client disconnects
ignore-sigpipe = true
ignore-write-errors = true
disable-write-exception = true

Exemplu de configurare pentru Apache

Se recomandă utilizarea prefork MPM atunci când se utilizează WSGI cu Weblate.

Următoarea configurație rulează Weblate ca WSGI, trebuie să aveți activat mod_wsgi (disponibil ca weblate/examples/apache.conf):

#
# VirtualHost for Weblate
#
# This example assumes Weblate is installed in virtualenv in /home/weblate/weblate-env
# and DATA_DIR is set to /home/weblate/data, please adjust paths to match your setup.
#
<VirtualHost *:80>
    ServerAdmin admin@weblate.example.org
    ServerName weblate.example.org

    # DATA_DIR/static/favicon.ico
    Alias /favicon.ico /home/weblate/data/static/favicon.ico

    # DATA_DIR/static/
    Alias /static/ /home/weblate/data/static/
    <Directory /home/weblate/data/static/>
        Require all granted
    </Directory>

    # DATA_DIR/media/
    Alias /media/ /home/weblate/data/media/
    <Directory /home/weblate/data/media/>
        Require all granted
    </Directory>

    # Path to your Weblate virtualenv
    WSGIDaemonProcess weblate python-home=/home/weblate/weblate-env user=weblate
    WSGIProcessGroup weblate
    WSGIApplicationGroup %{GLOBAL}

    WSGIScriptAlias / /home/weblate/weblate-env/lib/python3.7/site-packages/weblate/wsgi.py process-group=weblate request-timeout=600
    WSGIPassAuthorization On

    <Directory /home/weblate/weblate-env/lib/python3.7/site-packages/weblate/>
        <Files wsgi.py>
        Require all granted
        </Files>
    </Directory>

</VirtualHost>

Notă

Weblate necesită Python 3, așa că asigurați-vă că rulați varianta Python 3 a modwsgi. De obicei, acesta este disponibil ca un pachet separat, de exemplu libapache2-mod-wsgi-py3.

Exemplu de configurare pentru Apache și Gunicorn

Următoarea configurație rulează Weblate în Gunicorn și Apache 2.4 (disponibilă ca weblate/examples/apache.gunicorn.conf):

#
# VirtualHost for Weblate using gunicorn on localhost:8000
#
# This example assumes Weblate is installed in virtualenv in /home/weblate/weblate-env
# and DATA_DIR is set to /home/weblate/data, please adjust paths to match your setup.
#
<VirtualHost *:443>
    ServerAdmin admin@weblate.example.org
    ServerName weblate.example.org

    # DATA_DIR/static/favicon.ico
    Alias /favicon.ico /home/weblate/data/static/favicon.ico

    # DATA_DIR/static/
    Alias /static/ /home/weblate/data/static/
    <Directory /home/weblate/data/static/>
        Require all granted
    </Directory>

    # DATA_DIR/media/
    Alias /media/ /home/weblate/data/media/
    <Directory /home/weblate/data/media/>
        Require all granted
    </Directory>

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/https_cert.cert
    SSLCertificateKeyFile /etc/apache2/ssl/https_key.pem
    SSLProxyEngine On

    ProxyPass /favicon.ico !
    ProxyPass /static/ !
    ProxyPass /media/ !

    ProxyPass / http://localhost:8000/
    ProxyPassReverse / http://localhost:8000/
    ProxyPreserveHost On
</VirtualHost>

Rularea Weblate sub calea de acces

Nou în versiunea 1.3.

Se recomandă utilizarea prefork MPM atunci când se utilizează WSGI cu Weblate.

Un exemplu de configurare Apache pentru a servi Weblate sub /weblate. Din nou, folosind mod_wsgi (disponibil și ca weblate/examples/apache-path.conf):

#
# VirtualHost for Weblate, running under /weblate path
#
# This example assumes Weblate is installed in virtualenv in /home/weblate/weblate-env
# and DATA_DIR is set to /home/weblate/data, please adjust paths to match your setup.
#
<VirtualHost *:80>
    ServerAdmin admin@weblate.example.org
    ServerName weblate.example.org

    # DATA_DIR/static/favicon.ico
    Alias /weblate/favicon.ico /home/weblate/data/static/favicon.ico

    # DATA_DIR/static/
    Alias /weblate/static/ /home/weblate/data/static/
    <Directory /home/weblate/data/static/>
        Require all granted
    </Directory>

    # DATA_DIR/media/
    Alias /weblate/media/ /home/weblate/data/media/
    <Directory /home/weblate/data/media/>
        Require all granted
    </Directory>

    # Path to your Weblate virtualenv
    WSGIDaemonProcess weblate python-home=/home/weblate/weblate-env user=weblate
    WSGIProcessGroup weblate
    WSGIApplicationGroup %{GLOBAL}

    WSGIScriptAlias /weblate /home/weblate/weblate-env/lib/python3.7/site-packages/weblate/wsgi.py process-group=weblate request-timeout=600
    WSGIPassAuthorization On

    <Directory /home/weblate/weblate-env/lib/python3.7/site-packages/weblate/>
        <Files wsgi.py>
        Require all granted
        </Files>
    </Directory>

</VirtualHost>

În plus, va trebui să ajustați weblate/settings.py:

URL_PREFIX = "/weblate"

Sarcini de fundal folosind Celery

Nou în versiunea 3.2.

Weblate uses Celery to execute regular and background tasks. You are supposed to run a Celery service that will execute these. For example, it is responsible for handling following operations (this list is not complete):

A typical setup using Redis as a backend looks like this:

CELERY_TASK_ALWAYS_EAGER = False
CELERY_BROKER_URL = "redis://localhost:6379"
CELERY_RESULT_BACKEND = CELERY_BROKER_URL

Vezi și

Configurarea brokerului Redis în Celery <celery:broker-redis-configuration>`

De asemenea, ar trebui să porniți lucrătorul Celery pentru a procesa sarcinile și pentru a porni sarcinile programate; acest lucru poate fi făcut direct din linia de comandă (ceea ce este util mai ales atunci când depanați sau dezvoltați):

./weblate/examples/celery start
./weblate/examples/celery stop

Notă

Procesul Celery trebuie să fie executat sub același utilizator ca și procesul WSGI, în caz contrar fișierele din DATA_DIR vor fi stocate cu proprietate mixtă, ceea ce duce la probleme în timpul execuției.

A se vedea Permisiunile sistemului de fișiere și Rularea serverului.

Executing Celery tasks in the wsgi using eager mode

Notă

This will have severe performance impact on the web interface, and will break features depending on regullar trigger (for example commiting pending changes, digest notifications, or backups).

For development, you might want to use eager configuration, which does process all tasks in place:

CELERY_TASK_ALWAYS_EAGER = True
CELERY_BROKER_URL = "memory://"
CELERY_TASK_EAGER_PROPAGATES = True

Rularea Celery ca serviciu de sistem

Cel mai probabil, veți dori să rulați Celery ca demon, iar acest lucru este acoperit de Daemonization. Pentru cea mai obișnuită configurație Linux care utilizează systemd, puteți utiliza fișierele de exemplu livrate în dosarul examples listat mai jos.

Unitatea Systemd va fi plasată ca /etc/systemd/system/celery-weblate.service:

[Unit]
Description=Celery Service (Weblate)
After=network.target

[Service]
Type=forking
User=weblate
Group=weblate
EnvironmentFile=/etc/default/celery-weblate
WorkingDirectory=/home/weblate
RuntimeDirectory=celery
RuntimeDirectoryPreserve=restart
LogsDirectory=celery
ExecStart=/bin/sh -c '${CELERY_BIN} multi start ${CELERYD_NODES} \
  -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
  --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}'
ExecStop=/bin/sh -c '${CELERY_BIN} multi stopwait ${CELERYD_NODES} \
  --pidfile=${CELERYD_PID_FILE}'
ExecReload=/bin/sh -c '${CELERY_BIN} multi restart ${CELERYD_NODES} \
  -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
  --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}'

[Install]
WantedBy=multi-user.target

Configurația de mediu care urmează să fie plasată ca /etc/default/celery-weblate:

# Name of nodes to start
CELERYD_NODES="celery notify memory backup translate"

# Absolute or relative path to the 'celery' command:
CELERY_BIN="/home/weblate/weblate-env/bin/celery"

# App instance to use
# comment out this line if you don't use an app
CELERY_APP="weblate.utils"

# Extra command-line arguments to the worker,
# increase concurency if you get weblate.E019
CELERYD_OPTS="--beat:celery --queues:celery=celery --prefetch-multiplier:celery=4 \
    --queues:notify=notify --prefetch-multiplier:notify=10 \
    --queues:memory=memory --prefetch-multiplier:memory=10 \
    --queues:translate=translate --prefetch-multiplier:translate=4 \
    --concurrency:backup=1 --queues:backup=backup  --prefetch-multiplier:backup=2"

# Logging configuration
# - %n will be replaced with the first part of the nodename.
# - %I will be replaced with the current child process index
#   and is important when using the prefork pool to avoid race conditions.
CELERYD_PID_FILE="/run/celery/weblate-%n.pid"
CELERYD_LOG_FILE="/var/log/celery/weblate-%n%I.log"
CELERYD_LOG_LEVEL="INFO"

Configurație suplimentară pentru a roti jurnalele Celery folosind logrotate pentru a fi plasată ca /etc/logrotate.d/celery:

/var/log/celery/*.log {
        weekly
        missingok
        rotate 12
        compress
        notifempty
}

Sarcini periodice folosind Celery beat

Weblate vine cu o configurare integrată pentru sarcini programate. Cu toate acestea, puteți defini sarcini suplimentare în settings.py, de exemplu, consultați Angajări leneșe.

Sarcinile ar trebui să fie executate de demonul Celery beats. În cazul în care acesta nu funcționează corect, este posibil să nu fie în funcțiune sau baza sa de date a fost coruptă. În acest caz, verificați jurnalele de pornire Celery pentru a afla cauza principală.

Monitorizarea stării Celery

You can find current length of the Celery task queues in the Interfața de gestionare or you can use celery_queues on the command line. In case the queue will get too long, you will also get configuration error in the admin interface.

Atenționare

În mod implicit, erorile Celery sunt înregistrate doar în jurnalul Celery și nu sunt vizibile pentru utilizator. În cazul în care doriți să aveți o imagine de ansamblu asupra acestor eșecuri, se recomandă să configurați Colectarea rapoartelor de eroare.

Monitorizarea Weblate

Weblate oferă URL-ul /healthz/ pentru a fi utilizat în verificări simple ale stării de sănătate, de exemplu, folosind Kubernetes. Containerul Docker are încorporată o verificare a stării de sănătate folosind acest URL.

Pentru monitorizarea metricilor Weblate puteți utiliza punctul final API GET /api/metrics/.

Colectarea rapoartelor de eroare

Weblate, ca orice alt software, poate da greș. Pentru a colecta stări de eșec utile, vă recomandăm să utilizați servicii terțe pentru a colecta astfel de informații. Acest lucru este util mai ales în cazul sarcinilor Celery care eșuează, care altfel ar raporta erori doar în jurnale și nu veți fi notificat cu privire la acestea. Weblate are suport pentru următoarele servicii:

Santinela

Weblate are suport încorporat pentru Sentry. Pentru a-l utiliza, este suficient să setați SENTRY_DSN în settings.py:

SENTRY_DSN = "https://id@your.sentry.example.com/"

Rollabil

Weblate are suport încorporat pentru Rollbar. Pentru a-l utiliza, este suficient să urmați instrucțiunile pentru Rollbar notifier for Python.

Pe scurt, trebuie să ajustați settings.py:

# Add rollbar as last middleware:
MIDDLEWARE = [
    # … other middleware classes …
    "rollbar.contrib.django.middleware.RollbarNotifierMiddleware",
]

# Configure client access
ROLLBAR = {
    "access_token": "POST_SERVER_ITEM_ACCESS_TOKEN",
    "client_token": "POST_CLIENT_ITEM_ACCESS_TOKEN",
    "environment": "development" if DEBUG else "production",
    "branch": "main",
    "root": "/absolute/path/to/code/root",
}

Restul este integrat automat, iar acum veți colecta atât erorile de pe server, cât și cele de pe partea clientului.

Migrarea Weblate pe un alt server

Migrarea Weblate pe un alt server ar trebui să fie destul de ușoară, însă acesta stochează date în câteva locații pe care trebuie să le migrați cu atenție. Cea mai bună abordare este să opriți Weblate pentru migrare.

Migrarea bazei de date

În funcție de backend-ul bazei de date, este posibil să aveți mai multe opțiuni pentru a migra baza de date. Cea mai simplă este să descărcați baza de date de pe un server și să o importați pe cel nou. Alternativ, puteți utiliza replicarea în cazul în care baza de date o acceptă.

Cea mai bună abordare este de a utiliza instrumentele native ale bazei de date, deoarece acestea sunt de obicei cele mai eficiente (de exemplu, mysqldump sau pg_dump). Dacă doriți să migrați între baze de date diferite, singura opțiune ar putea fi să folosiți managementul Django pentru a descărca și importa baza de date:

# Export current data
weblate dumpdata > /tmp/weblate.dump
# Import dump
weblate loaddata /tmp/weblate.dump

Migrarea depozitelor VCS

Depozitele VCS stocate în DATA_DIR trebuie, de asemenea, să fie migrate. Puteți să le copiați pur și simplu sau să folosiți rsync pentru a face migrarea mai eficient.

Alte note

Nu uitați să mutați și alte servicii pe care Weblate le-ar fi putut folosi, cum ar fi Redis, Cron jobs sau backend-uri de autentificare personalizate.

Implementări Weblate

Weblate poate fi instalat cu ușurință în cloud-ul tău. Vă rugăm să găsiți un ghid detaliat pentru platforma ta:

Implementări de la terți pentru Weblate

Notă

Următoarele implementări nu sunt dezvoltate sau susținute de echipa Weblate. Este posibil ca anumite părți ale configurației să varieze față de cele descrise în această documentație.

Stiva Bitnami Weblate

Bitnami oferă o stivă Weblate pentru mai multe platforme la <https://bitnami.com/stack/weblate>. Configurația va fi ajustată în timpul instalării, consultați <https://bitnami.com/stack/weblate/README.txt> pentru mai multă documentație.

Pachet Weblate Cloudron

Cloudron este o platformă pentru aplicații web auto-hosting. Weblate instalat cu Cloudron va fi actualizat automat. Pachetul este întreținut de echipa Cloudron la repo-ul lor de pachete Weblate.

Instalați Weblate cu Cloudron

Weblate în YunoHost

Proiectul de auto-hosting YunoHost oferă un pachet pentru Weblate. Odată ce aveți instalarea YunoHost, puteți instala Weblate ca orice altă aplicație. Aceasta vă va oferi o stivă complet funcțională cu backup și restaurare, dar este posibil să trebuiască să editați fișierul de setări pentru anumite utilizări.

Puteți utiliza interfața de administrare sau acest buton (care vă va duce la serverul tău):

Instalați Weblate cu YunoHost

De asemenea, este posibil să se utilizeze interfața de linie de comandă:

yunohost app install https://github.com/YunoHost-Apps/weblate_ynh

Actualizarea Weblate

Actualizări ale imaginilor Docker

Imaginea oficială Docker (a se vedea Instalarea folosind Docker) are integrate toate etapele de actualizare. Nu există niciun pas manual î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]"
    

    If you don’t want to install all of the optional dependencies do:

    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. New Weblate release might have new Dependențe opționale, please check if they cover features you want.

  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
    
  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 setare MT_DEEPL_API_URL. Este posibil să fie necesar să ajustați MT_DEEPL_API_URL pentru a corespunde abonamentului vostru.

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 addon-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.

Upgrade from 4.8 to 4.9

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

  • There is a change in storing metrics, the upgrade can take log time on larger sites.

Actualizarea de la Python 2 la Python 3

Weblate nu mai acceptă Python mai vechi de 3.5. Î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.

Copierea de rezervă și mutarea Weblate

Backup automatizat folosind BorgBackup

Nou în versiunea 3.9.

Weblate are un suport încorporat pentru crearea de copii de rezervă pentru servicii folosind BorgBackup. Borg creează copii de rezervă criptate, eficiente din punct de vedere al spațiului, care pot fi stocate în siguranță în cloud. Copiile de rezervă pot fi controlate în interfața de gestionare din fila Backups.

Schimbat în versiunea 4.4.1: Atât bazele de date PostgreSQL, cât și MySQL/MariaDB sunt incluse în copiile de rezervă automate.

Copiile de rezervă care utilizează Borg sunt incrementale, iar Weblate este configurat să păstreze următoarele copii de rezervă:

  • Backup-uri zilnice pentru 14 zile înapoi

  • Backup-uri săptămânale pentru 8 săptămâni în urmă

  • Backup-uri lunare pentru 6 luni în urmă

_images/backups.png

Cheia de criptare Borg

BorgBackup creează copii de rezervă criptate și nu le veți putea restaura fără fraza de acces. Fraza de acces este generată la adăugarea unui nou serviciu de backup și ar trebui să o copiați și să o păstrați într-un loc sigur.

Dacă folosiți Stocarea de backup provizionată Weblate, vă rugăm să faceți o copie de rezervă și pentru cheia SSH privată, deoarece aceasta este folosită pentru a accesa copiile de rezervă.

Vezi și

borg init

Customizing backup

Stocarea de backup provizionată Weblate

Cel mai simplu mod de a face o copie de siguranță a instanței Weblate este achiziționarea serviciului backup la weblate.org. Iată cum îl puneți în funcțiune:

  1. Achiziționați serviciul Backup pe https://weblate.org/support/#backup.

  2. Introduceți cheia obținută în interfața de management, a se vedea Integrarea sprijinului.

  3. Weblate se conectează la serviciul cloud și obține informații de acces pentru copiile de rezervă.

  4. Activați noua configurație de backup din fila Backups.

  5. Faceți o copie de rezervă a acreditărilor Borg pentru a putea restaura copiile de rezervă, consultați Cheia de criptare Borg.

Sugestie

Pasul manual de a porni totul există pentru siguranța dumneavoastră. Fără consimțământul dvs. nu se trimite niciun fel de date către depozitul de backup obținut prin procesul de înregistrare.

Utilizarea stocării de rezervă personalizate

De asemenea, puteți utiliza propriul spațiu de stocare pentru copiile de rezervă. SSH poate fi folosit pentru a stoca copiile de rezervă în destinația la distanță, serverul țintă trebuie să aibă instalat BorgBackup.

Vezi și

General în documentația Borg

Sistem de fișiere local

Se recomandă să specificați calea absolută pentru copia de rezervă locală, de exemplu /path/to/backup. Directorul trebuie să poată fi inscripționat de către utilizatorul care rulează Weblate (a se vedea Permisiunile sistemului de fișiere). Dacă nu există, Weblate încearcă să îl creeze, dar are nevoie de permisiunile corespunzătoare pentru a face acest lucru.

Sugestie

Atunci când executați Weblate în Docker, asigurați-vă că locația de backup este expusă ca volum din containerul Weblate. În caz contrar, copiile de rezervă vor fi aruncate de Docker la repornirea containerului în care se află.

O opțiune este de a plasa copiile de rezervă într-un volum existent, de exemplu /app/data/borgbackup. Acesta este un volum existent în container.

Puteți, de asemenea, să adăugați un nou container pentru copiile de rezervă în fișierul Docker Compose, de exemplu, folosind /borgbackup:

services:
  weblate:
    volumes:
      - /home/weblate/data:/app/data
      - /home/weblate/borgbackup:/borgbackup

Directorul în care vor fi stocate copiile de rezervă trebuie să fie deținut de UID 1000, altfel Weblate nu va putea scrie copiile de rezervă acolo.

Copii de rezervă la distanță

Pentru a crea copii de rezervă la distanță, va trebui să instalați BorgBackup pe un alt server care este accesibil pentru implementarea Weblate prin SSH folosind cheia SSH Weblate:

  1. Pregătiți un server pe care vor fi stocate copiile de rezervă.

  2. Instalați serverul SSH pe acesta (îl veți primi în mod implicit cu majoritatea distribuțiilor Linux).

  3. Instalați BorgBackup pe acel server; majoritatea distribuțiilor Linux au pachete disponibile (vezi Installation).

  4. Alegeți un utilizator existent sau creați un utilizator nou care va fi utilizat pentru backup.

  5. Adăugați cheia SSH Weblate la utilizator, astfel încât Weblate să poată accesa SSH la server fără parolă (vezi Cheie SSH Weblate).

  6. Configure the backup location in Weblate as user@host:/path/to/backups or ssh://user@host:port/path/to/backups.

Sugestie

Stocarea de backup provizionată Weblate vă oferă backup-uri automate de la distanță.

Restaurarea din BorgBackup

  1. Restaurați accesul la depozitul de copii de rezervă și pregătiți fraza de rezervă.

  2. Listează toate copiile de rezervă de pe server folosind borg list REPOSITORY.

  3. Restaurați copia de rezervă dorită în directorul curent folosind borg extract REPOSITORY::ARCHIVE.

  4. Restaurați baza de date de la descărcarea SQL plasată în directorul backup din directorul de date Weblate (see Date descărcate pentru copii de rezervă).

  5. Copiați configurația Weblate (backups/settings.py, see Date descărcate pentru copii de rezervă) în locația corectă, a se vedea Ajustarea configurației.

    Atunci când utilizați containerul Docker, fișierul de setări este deja inclus în container și trebuie să restaurați variabilele de mediu originale. Fișierul environment.yml vă poate ajuta în acest sens (a se vedea Date descărcate pentru copii de rezervă).

  6. Copiați întregul director de date restaurat în locația configurată prin DATA_DIR.

    Atunci când utilizați containerul Docker, plasați datele în volumul de date, consultați Volumele containerelor Docker.

    Vă rugăm să vă asigurați că fișierele au proprietatea și permisiunile corecte, consultați Permisiunile sistemului de fișiere.

Sesiunea Borg ar putea arăta în felul următor:

$ borg list /tmp/xxx
Enter passphrase for key /tmp/xxx:
2019-09-26T14:56:08                  Thu, 2019-09-26 14:56:08 [de0e0f13643635d5090e9896bdaceb92a023050749ad3f3350e788f1a65576a5]
$ borg extract /tmp/xxx::2019-09-26T14:56:08
Enter passphrase for key /tmp/xxx:

Backup manual

În funcție de ceea ce doriți să salvați, faceți o copie de rezervă a tipului de date pe care Weblate le stochează în fiecare loc respectiv.

Sugestie

Dacă efectuați copii de rezervă manuale, este posibil să doriți să reduceți la tăcere avertismentul Weblate privind lipsa de copii de rezervă adăugând weblate.I028 la SILENCED_SYSTEM_CHECKS în settings.py sau WEBLATE_SILENCED_SYSTEM_CHECKS pentru Docker.

SILENCED_SYSTEM_CHECKS.append("weblate.I028")

Baza de date

Locația efectivă de stocare depinde de configurația bazei de date.

Sugestie

Baza de date este cea mai importantă modalitate de stocare. Configurați în mod regulat copii de rezervă ale bazei de date. Fără baza de date, toate traducerile dispar.

Backup nativ al bazei de date

Abordarea recomandată este să salvați o copie a bazei de date utilizând instrumente native pentru baze de date, cum ar fi pg_dump sau mysqldump. De obicei, se comportă mai bine decât backup-ul Django și restaurează tabelele complete cu toate datele lor.

Puteți restaura această copie de rezervă într-o versiune Weblate mai nouă, aceasta va efectua toate migrările necesare atunci când este rulată în migrate. Vă rugăm să consultați Actualizarea Weblate pentru informații mai detaliate despre cum să faceți upgrade între versiuni.

Copie de rezervă a bazei de date Django

Alternativ, puteți face o copie de siguranță a bazei de date folosind comanda dumpdata de la Django. În acest fel, copia de rezervă este agnostică față de baza de date și poate fi utilizată în cazul în care doriți să schimbați backend-ul bazei de date.

Înainte de restaurarea bazei de date, trebuie să rulați exact aceeași versiune Weblate pe care a fost efectuată copia de rezervă. Acest lucru este necesar deoarece structura bazei de date se schimbă între versiuni și ați putea ajunge să corupeți datele într-un fel sau altul. După instalarea aceleiași versiuni, rulați toate migrările bazei de date folosind migrate.

Ulterior, unele intrări vor fi deja create în baza de date și le veți avea și în copia de rezervă a bazei de date. Abordarea recomandată este de a șterge manual astfel de intrări folosind shell-ul de management (a se vedea Invocarea comenzilor de gestionare):

weblate shell
>>> from weblate.auth.models import User
>>> User.objects.get(username='anonymous').delete()

Fișiere

Dacă aveți suficient spațiu de backup, faceți o copie de rezervă a întregului DATA_DIR. Acesta este un pariu sigur, chiar dacă include unele fișiere pe care nu le doriți. Următoarele secțiuni descriu în detaliu ce trebuie să salvați și ce puteți sări peste.

Date descărcate pentru copii de rezervă

Schimbat în versiunea 4.7: Descărcarea mediului a fost adăugată ca environment.yml pentru a ajuta la restaurarea în mediile Docker.

Stocat în DATA_DIR /backups.

Weblate descarcă diverse date aici și puteți include aceste fișiere pentru copii de rezervă mai complete. Fișierele sunt actualizate zilnic (necesită un server Celery beats în funcțiune, consultați Sarcini de fundal folosind Celery). În prezent, acestea includ:

  • Setări Weblate ca settings.py (există, de asemenea, o versiune extinsă în settings-expanded.py).

  • Copie de rezervă a bazei de date PostgreSQL ca database.sql.

  • Descărcarea mediului ca environment.yml.

În mod implicit, copiile de rezervă ale bazei de date sunt salvate ca text simplu, dar pot fi comprimate sau pot fi omise în întregime folosind DATABASE_BACKUP.

Pentru a restabili copia de rezervă a bazei de date, încărcați-o cu ajutorul instrumentelor dabase, de exemplu:

psql --file=database.sql weblate
Depozite de control al versiunilor

Stocat în DATA_DIR /vcs.

Depozitele de control al versiunilor conțin o copie a depozitelor din amonte cu modificările Weblate. Dacă aveți activat Împingeți pe comitere pentru toate componentele de traducere, toate modificările Weblate sunt incluse în amonte. Nu este nevoie să faceți o copie de rezervă a depozitelor din partea Weblate, deoarece acestea pot fi clonate din nou din locația (locațiile) din amonte fără pierderi de date.

Chei SSH și GPG

Stocate în DATA_DIR /ssh și DATA_DIR /home.

Dacă utilizați chei SSH sau GPG generate de Weblate, trebuie să faceți o copie de rezervă a acestor locații. În caz contrar, veți pierde cheile private și va trebui să regenerați altele noi.

Fișiere încărcate de utilizator

Stocat în DATA_DIR /media.

Ar trebui să faceți o copie de rezervă a tuturor fișierelor încărcate de utilizator (de exemplu, Context vizual pentru șiruri de caractere).

Sarcini de celery

Sarcinile Celery pot conține unele informații, dar de obicei nu este necesară pentru o copie de rezervă. Cel mult veți pierde actualizările care nu au fost încă procesate în memoria de traducere. Se recomandă să se efectueze oricum actualizarea textului integral sau a depozitului la restaurare, astfel încât nu există nicio problemă în a le pierde.

Linie de comandă pentru backup manual

Folosind un cron job, puteți configura o comandă Bash care să fie executată zilnic, de exemplu:

$ XZ_OPT="-9" tar -Jcf ~/backup/weblate-backup-$(date -u +%Y-%m-%d_%H%M%S).xz backups vcs ssh home media fonts secret

Șirul de caractere dintre ghilimele după XZ_OPT vă permite să alegeți opțiunile xz, de exemplu cantitatea de memorie folosită pentru compresie; vedeți https://linux.die.net/man/1/xz

Puteți ajusta lista de dosare și fișiere în funcție de nevoile dumneavoastră. Pentru a evita salvarea memoriei de traducere (în dosarul de copii de rezervă), puteți utiliza:

$ XZ_OPT="-9" tar -Jcf ~/backup/weblate-backup-$(date -u +%Y-%m-%d_%H%M%S).xz backups/database.sql backups/settings.py vcs ssh home media fonts secret

Restaurarea backup-ului manual

  1. Restaurați toate datele pe care le-ați salvat.

  2. Actualizați toate depozitele folosind updategit.

    weblate updategit --all
    

Mutarea unei instalații Weblate

Mutați instalația pe un alt sistem, urmând instrucțiunile de backup și restaurare de mai sus.

Autentificare

Înregistrare utilizator

Configurația implicită pentru Weblate este de a utiliza python-social-auth, un formular pe site-ul web pentru a gestiona înregistrarea noilor utilizatori. După confirmarea e-mail-ului, un nou utilizator poate contribui sau se poate autentifica prin utilizarea unuia dintre serviciile terților.

De asemenea, puteți dezactiva înregistrarea noilor utilizatori folosind REGISTRATION_OPEN.

Încercările de autentificare sunt supuse Limitarea ratei.

Backend-uri de autentificare

Pentru autentificare se folosește soluția integrată în Django, care include diverse opțiuni sociale. Folosirea acesteia înseamnă că puteți importa baza de date de utilizatori din alte proiecte bazate pe Django (see Migrarea de la Pootle).

În plus, Django poate fi configurat pentru a se autentifica și prin alte mijloace.

Vezi și

Setări de autentificare descrie modul de configurare a autentificării în imaginea oficială Docker.

Autentificare socială

Datorită Welcome to Python Social Auth’s documentation!, Weblate suportă autentificarea cu ajutorul multor servicii terțe, cum ar fi GitLab, Ubuntu, Fedora, etc.

Vă rugăm să consultați documentația lor pentru instrucțiuni de configurare generică în Django Framework.

Notă

În mod implicit, Weblate se bazează pe serviciile de autentificare ale unor terțe părți pentru a furniza o adresă de e-mail validată. Dacă unele dintre serviciile pe care doriți să le utilizați nu acceptă acest lucru, vă rugăm să impuneți validarea e-mailului pe partea Weblate prin configurarea FORCE_EMAIL_VALIDATION pentru acestea. De exemplu:

SOCIAL_AUTH_OPENSUSE_FORCE_EMAIL_VALIDATION = True

Vezi și

Pipeline

Activarea backend-urilor individuale este destul de ușoară, este doar o chestiune de adăugare a unei intrări la AUTHENTICATION_BACKENDS și, eventual, adăugarea cheilor necesare pentru o anumită metodă de autentificare. Vă rugăm să rețineți că unele backend-uri nu furnizează în mod implicit e-mailul utilizatorului, trebuie să îl solicitați în mod explicit, altfel Weblate nu va putea să crediteze în mod corespunzător contribuțiile pe care le fac utilizatorii.

Sugestie

Cele mai multe dintre backend-urile de autentificare necesită HTTPS. Odată ce HTTPS este activat în serverul dvs. web, vă rugăm să configurați Weblate pentru a-l raporta în mod corespunzător folosind ENABLE_HTTPS sau prin WEBLATE_ENABLE_HTTPS în containerul Docker.

Vezi și

Python Social Auth backend <psa:backends/index>`

Autentificare OpenID

În cazul serviciilor bazate pe OpenID, de obicei este vorba doar de activarea acestora. Următoarea secțiune permite autentificarea OpenID pentru OpenSUSE, Fedora și Ubuntu:

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.email.EmailAuth",
    "social_core.backends.suse.OpenSUSEOpenId",
    "social_core.backends.ubuntu.UbuntuOpenId",
    "social_core.backends.fedora.FedoraOpenId",
    "weblate.accounts.auth.WeblateUserBackend",
)

Vezi și

OpenID

Autentificarea GitHub

Trebuie să înregistrați o aplicație OAuth pe GitHub și apoi să-i spuneți lui Weblate toate secretele sale:

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.github.GithubOAuth2",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Social auth backends setup
SOCIAL_AUTH_GITHUB_KEY = "GitHub Client ID"
SOCIAL_AUTH_GITHUB_SECRET = "GitHub Client Secret"
SOCIAL_AUTH_GITHUB_SCOPE = ["user:email"]

GitHub ar trebui să fie configurat pentru a avea un URL de callback ca https://example.com/accounts/complete/github/.

Notă

URL-ul de callback furnizat de Weblate în timpul autentificării include domeniul configurat. În cazul în care primiți erori privind neconcordanța URL-ului, poate doriți să remediați acest lucru, consultați Setați domeniul corect al site-ului.

Vezi și

GitHub

Autentificarea Bitbucket

Trebuie să înregistrați o aplicație pe Bitbucket și apoi să-i spuneți lui Weblate toate secretele sale:

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.bitbucket.BitbucketOAuth",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Social auth backends setup
SOCIAL_AUTH_BITBUCKET_KEY = "Bitbucket Client ID"
SOCIAL_AUTH_BITBUCKET_SECRET = "Bitbucket Client Secret"
SOCIAL_AUTH_BITBUCKET_VERIFIED_EMAILS_ONLY = True

Notă

URL-ul de callback furnizat de Weblate în timpul autentificării include domeniul configurat. În cazul în care primiți erori privind neconcordanța URL-ului, poate doriți să remediați acest lucru, consultați Setați domeniul corect al site-ului.

Vezi și

Bitbucket

Google OAuth 2

Pentru a utiliza Google OAuth 2, trebuie să înregistrați o aplicație pe <https://console.developers.google.com/> și să activați API-ul Google+.

URL-ul de redirecționare este https://WEBLATE SERVER/accounts/complete/google-oauth2/

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.google.GoogleOAuth2",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Social auth backends setup
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = "Client ID"
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = "Client secret"

Notă

URL-ul de callback furnizat de Weblate în timpul autentificării include domeniul configurat. În cazul în care primiți erori privind neconcordanța URL-ului, poate doriți să remediați acest lucru, consultați Setați domeniul corect al site-ului.

Vezi și

Google

Facebook OAuth 2

Ca de obicei în cazul serviciilor OAuth 2, trebuie să vă înregistrați aplicația cu Facebook. După ce ați făcut acest lucru, puteți configura Weblate pentru a o utiliza:

URL-ul de redirecționare este https://WEBLATE SERVER/accounts/complete/facebook/

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.facebook.FacebookOAuth2",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Social auth backends setup
SOCIAL_AUTH_FACEBOOK_KEY = "key"
SOCIAL_AUTH_FACEBOOK_SECRET = "secret"
SOCIAL_AUTH_FACEBOOK_SCOPE = ["email", "public_profile"]

Notă

URL-ul de callback furnizat de Weblate în timpul autentificării include domeniul configurat. În cazul în care primiți erori privind neconcordanța URL-ului, poate doriți să remediați acest lucru, consultați Setați domeniul corect al site-ului.

Vezi și

Facebook

GitLab OAuth 2

Pentru a utiliza GitLab OAuth 2, trebuie să înregistrați o aplicație pe <https://gitlab.com/profile/applications>.

URL-ul de redirecționare este https://WEBLATE SERVER/accounts/complete/gitlab/ și asigurați-vă că ați marcat domeniul read_user.

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.gitlab.GitLabOAuth2",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Social auth backends setup
SOCIAL_AUTH_GITLAB_KEY = "Application ID"
SOCIAL_AUTH_GITLAB_SECRET = "Secret"
SOCIAL_AUTH_GITLAB_SCOPE = ["read_user"]

# If you are using your own GitLab
# SOCIAL_AUTH_GITLAB_API_URL = 'https://gitlab.example.com/'

Notă

URL-ul de callback furnizat de Weblate în timpul autentificării include domeniul configurat. În cazul în care primiți erori privind neconcordanța URL-ului, poate doriți să remediați acest lucru, consultați Setați domeniul corect al site-ului.

Vezi și

GitLab

Microsoft Azure directoare active

Weblate poate fi configurat pentru a utiliza chiriași comuni sau specifici pentru autentificare.

URL-ul de redirecționare este https://WEBLATE SERVER/accounts/complete/azuread-oauth2/ pentru autentificarea comună și https://WEBLATE SERVER/accounts/complete/azuread-tenant-oauth2/ pentru autentificarea specifică chiriașilor.

# Azure AD common

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.azuread.AzureADOAuth2",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# OAuth2 keys
SOCIAL_AUTH_AZUREAD_OAUTH2_KEY = ""
SOCIAL_AUTH_AZUREAD_OAUTH2_SECRET = ""
# Azure AD Tenant

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.azuread_tenant.AzureADTenantOAuth2",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# OAuth2 keys
SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_KEY = ""
SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_SECRET = ""
# Tenant ID
SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID = ""

Notă

URL-ul de callback furnizat de Weblate în timpul autentificării include domeniul configurat. În cazul în care primiți erori privind neconcordanța URL-ului, poate doriți să remediați acest lucru, consultați Setați domeniul corect al site-ului.

Slack

Pentru a utiliza Slack OAuth 2, trebuie să înregistrați o aplicație pe <https://api.slack.com/apps>.

URL-ul de redirecționare este https://WEBLATE SERVER/accounts/complete/slack/.

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.slack.SlackOAuth2",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Social auth backends setup
SOCIAL_AUTH_SLACK_KEY = ""
SOCIAL_AUTH_SLACK_SECRET = ""

Notă

URL-ul de callback furnizat de Weblate în timpul autentificării include domeniul configurat. În cazul în care primiți erori privind neconcordanța URL-ului, poate doriți să remediați acest lucru, consultați Setați domeniul corect al site-ului.

Vezi și

Slack

Suprascrierea numelor și pictogramelor metodelor de autentificare

Puteți suprascrie numele de afișare și pictograma metodei de autentificare utilizând setările SOCIAL_AUTH_<NAME>_IMAGE și SOCIAL_AUTH_<NAME>_TITLE. De exemplu, suprapunerea denumirii pentru Auth0 ar arăta astfel:

SOCIAL_AUTH_AUTH0_IMAGE = "custom.svg"
SOCIAL_AUTH_AUTH0_TITLE = "Custom auth"

Dezactivarea autentificării prin parolă

Autentificarea prin e-mail și parolă poate fi dezactivată prin eliminarea social_core.backends.email.EmailAuth din AUTHENTICATION_BACKENDS. Păstrați întotdeauna weblate.accounts.auth.WeblateUserBackend acolo, este necesar pentru funcționalitatea de bază a Weblate.

Sfat

Puteți utiliza în continuare autentificarea prin parolă pentru interfața de administrare, pentru utilizatorii pe care îi creați manual acolo. Trebuie doar să navigați la /admin/.

De exemplu, autentificarea folosind doar furnizorul openSUSE Open ID poate fi realizată folosind următoarele:

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.suse.OpenSUSEOpenId",
    "weblate.accounts.auth.WeblateUserBackend",
)

Autentificarea prin parolă

Fișierul implicit settings.py vine cu un set rezonabil de AUTH_PASSWORD_VALIDATORS:

  • Parolele nu pot fi prea asemănătoare cu alte informații personale.

  • Parolele trebuie să conțină cel puțin 10 caractere.

  • Parolele nu pot fi o parolă folosită în mod obișnuit.

  • Parolele nu pot fi în întregime numerice.

  • Parolele nu pot fi formate dintr-un singur caracter sau numai din spații albe.

  • Parolele nu se pot potrivi cu o parolă pe care ați folosit-o în trecut.

Puteți personaliza această setare pentru a se potrivi cu politica dumneavoastră privind parolele.

În plus, puteți instala și django-zxcvbn-password care oferă estimări destul de realiste ale dificultății parolelor și permite respingerea parolelor sub un anumit prag.

Autentificare SAML

Nou în versiunea 4.1.1.

Vă rugăm să urmați instrucțiunile Python Social Auth pentru configurare. Diferențe notabile:

  • Weblate acceptă un singur IDP care trebuie să fie numit weblate în SOCIAL_AUTH_SAML_ENABLED_IDPS`.

  • URL-ul metadatelor SAML XML este /accounts/metadata/saml/.

  • Următoarele setări sunt completate automat: SOCIAL_AUTH_SAML_SP_ENTITY_ID, SOCIAL_AUTH_SAML_TECHNICAL_CONTACT, SOCIAL_AUTH_SAML_SUPPORT_CONTACT, SOCIAL_AUTH_SAML_SUPPORT_CONTACT

Exemplu de configurare:

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.email.EmailAuth",
    "social_core.backends.saml.SAMLAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Social auth backends setup
SOCIAL_AUTH_SAML_SP_ENTITY_ID = f"https://{SITE_DOMAIN}/accounts/metadata/saml/"
SOCIAL_AUTH_SAML_SP_PUBLIC_CERT = "-----BEGIN CERTIFICATE-----"
SOCIAL_AUTH_SAML_SP_PRIVATE_KEY = "-----BEGIN PRIVATE KEY-----"
SOCIAL_AUTH_SAML_ENABLED_IDPS = {
    "weblate": {
        "entity_id": "https://idp.testshib.org/idp/shibboleth",
        "url": "https://idp.testshib.org/idp/profile/SAML2/Redirect/SSO",
        "x509cert": "MIIEDjCCAvagAwIBAgIBADA ... 8Bbnl+ev0peYzxFyF5sQA==",
        "attr_name": "full_name",
        "attr_username": "username",
        "attr_email": "email",
    }
}
SOCIAL_AUTH_SAML_ORG_INFO = {
    "en-US": {
        "name": "example",
        "displayname": "Example Inc.",
        "url": "http://example.com"
    }
}
SOCIAL_AUTH_SAML_TECHNICAL_CONTACT = {
    "givenName": "Tech Gal",
    "emailAddress": "technical@example.com"
}
SOCIAL_AUTH_SAML_SUPPORT_CONTACT = {
    "givenName": "Support Guy",
    "emailAddress": "support@example.com"
}

Configurația implicită extrage detaliile utilizatorului din următoarele atribute, configurați IDP-ul dumneavoastră pentru a le furniza:

Atributul

Referință SAML URI

Nume și prenume

urn:oid:2.5.4.3

Prenume

urn:oid:2.5.4.42

Numele de familie

urn:oid:2.5.4.4

Email

urn:oid:0.9.2342.19200300.100.1.3

Nume utilizator

urn:oid:0.9.2342.19200300.100.1.1

Sugestie

Exemplul de mai sus și imaginea Docker definesc un IDP denumit weblate. Este posibil să fie necesar să configurezi acest șir ca Relay în IDP-ul tău.

Autentificare LDAP

Autentificarea LDAP poate fi realizată cel mai bine folosind pachetul django-auth-ldap. Îl puteți instala prin mijloace obișnuite:

# Using PyPI
pip install django-auth-ldap>=1.3.0

# Using apt-get
apt-get install python-django-auth-ldap

Sugestie

Acest pachet este inclus în containerul Docker, vezi Instalarea folosind Docker.

Notă

Există unele incompatibilități în modulul Python LDAP 3.1.0, care vă pot împiedica să utilizați această versiune. Dacă primiți eroarea AttributeError: «module» object has no attribute «_trace_level», ar putea fi de ajutor dacă faceți downgrade la python-ldap 3.0.0.

După ce ați instalat pachetul, îl puteți conecta la autentificarea Django:

# Add LDAP backed, keep Django one if you want to be able to sign in
# even without LDAP for admin account
AUTHENTICATION_BACKENDS = (
    "django_auth_ldap.backend.LDAPBackend",
    "weblate.accounts.auth.WeblateUserBackend",
)

# LDAP server address
AUTH_LDAP_SERVER_URI = "ldaps://ldap.example.net"

# DN to use for authentication
AUTH_LDAP_USER_DN_TEMPLATE = "cn=%(user)s,o=Example"
# Depending on your LDAP server, you might use a different DN
# like:
# AUTH_LDAP_USER_DN_TEMPLATE = 'ou=users,dc=example,dc=com'

# List of attributes to import from LDAP upon sign in
# Weblate stores full name of the user in the full_name attribute
AUTH_LDAP_USER_ATTR_MAP = {
    "full_name": "name",
    # Use the following if your LDAP server does not have full name
    # Weblate will merge them later
    # 'first_name': 'givenName',
    # 'last_name': 'sn',
    # Email is required for Weblate (used in VCS commits)
    "email": "mail",
}

# Hide the registration form
REGISTRATION_OPEN = False

Notă

Ar trebui să eliminați 'social_core.backends.email.EmailAuth' din setarea AUTHENTICATION_BACKENDS, altfel utilizatorii își vor putea seta parola în Weblate și se vor putea autentifica folosind-o. Păstrarea 'weblate.accounts.auth.WeblateUserBackend' este încă necesară pentru a face permisiuni și a facilita utilizatorii anonimi. De asemenea, vă va permite să vă autentificați folosind un cont de administrator local, dacă l-ați creat (e.g. by using createadmin).

Utilizarea parolei bind

Dacă nu puteți utiliza direct bind pentru autentificare, va trebui să utilizați căutarea și să furnizați un utilizator care să se lege pentru căutare. De exemplu:

import ldap
from django_auth_ldap.config import LDAPSearch

AUTH_LDAP_BIND_DN = ""
AUTH_LDAP_BIND_PASSWORD = ""
AUTH_LDAP_USER_SEARCH = LDAPSearch(
    "ou=users,dc=example,dc=com", ldap.SCOPE_SUBTREE, "(uid=%(user)s)"
)

Integrarea Active Directory

import ldap
from django_auth_ldap.config import LDAPSearch, NestedActiveDirectoryGroupType

AUTH_LDAP_BIND_DN = "CN=ldap,CN=Users,DC=example,DC=com"
AUTH_LDAP_BIND_PASSWORD = "password"

# User and group search objects and types
AUTH_LDAP_USER_SEARCH = LDAPSearch(
    "CN=Users,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)"
)

# Make selected group a superuser in Weblate
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
    # is_superuser means user has all permissions
    "is_superuser": "CN=weblate_AdminUsers,OU=Groups,DC=example,DC=com",
}

# Map groups from AD to Weblate
AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
    "OU=Groups,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(objectClass=group)"
)
AUTH_LDAP_GROUP_TYPE = NestedActiveDirectoryGroupType()
AUTH_LDAP_FIND_GROUP_PERMS = True

# Optionally enable group mirroring from LDAP to Weblate
# AUTH_LDAP_MIRROR_GROUPS = True

Autentificare CAS

Autentificarea CAS poate fi realizată cu ajutorul unui pachet precum django-cas-ng.

Primul pas constă în dezvăluirea câmpului de e-mail al utilizatorului prin intermediul CAS. Acest lucru trebuie configurat chiar pe serverul CAS și necesită să rulați cel puțin CAS v2, deoarece CAS v1 nu acceptă deloc atribute.

Al doilea pas este actualizarea Weblate pentru a utiliza serverul CAS și atributele.

Pentru a instala django-cas-ng:

pip install django-cas-ng

După ce ați instalat pachetul, îl puteți conecta la sistemul de autentificare Django modificând fișierul settings.py:

# Add CAS backed, keep the Django one if you want to be able to sign in
# even without LDAP for the admin account
AUTHENTICATION_BACKENDS = (
    "django_cas_ng.backends.CASBackend",
    "weblate.accounts.auth.WeblateUserBackend",
)

# CAS server address
CAS_SERVER_URL = "https://cas.example.net/cas/"

# Add django_cas_ng somewhere in the list of INSTALLED_APPS
INSTALLED_APPS = (..., "django_cas_ng")

În cele din urmă, se poate utiliza un semnal pentru a corela câmpul de e-mail cu obiectul utilizator. Pentru ca acest lucru să funcționeze, trebuie să importați semnalul din pachetul django-cas-ng și să vă conectați codul cu acest semnal. Făcând acest lucru în fișierul de setări poate cauza probleme, de aceea este sugerat să îl puneți:

  • În metoda django.apps.AppConfig.ready() din configurația aplicației dvs

  • În fișierul urls.py al proiectului (atunci când nu există modele)

from django_cas_ng.signals import cas_user_authenticated
from django.dispatch import receiver


@receiver(cas_user_authenticated)
def update_user_email_address(sender, user=None, attributes=None, **kwargs):
    # If your CAS server does not always include the email attribute
    # you can wrap the next two lines of code in a try/catch block.
    user.email = attributes["email"]
    user.save()

Vezi și

Django CAS NG

Configurarea autentificării Django de la o terță parte

În general, orice plugin de autentificare Django ar trebui să funcționeze cu Weblate. Trebuie doar să urmați instrucțiunile pentru plugin, dar nu uitați să păstrați instalat backend-ul de utilizator Weblate.

De obicei, instalarea va consta în adăugarea unui backend de autentificare la AUTHENTICATION_BACKENDS și instalarea unei aplicații de autentificare (dacă există) în INSTALLED_APPS:

AUTHENTICATION_BACKENDS = (
    # Add authentication backend here
    "weblate.accounts.auth.WeblateUserBackend",
)

INSTALLED_APPS += (
    # Install authentication app here
)

Controlul accesului

Weblate este dotat cu un sistem de privilegii fin pentru a atribui permisiuni utilizatorilor pentru întreaga instanță sau pentru un domeniu limitat.

Schimbat în versiunea 3.0: Înainte de Weblate 3.0, sistemul de privilegii era bazat pe Django, dar acum este construit special pentru Weblate. Dacă e utilizat ceva mai vechi, vă rugăm să consultați documentația pentru versiunea specifică pe care o utilizați.

Cotrol acces simplu

Dacă nu administrați întreaga instalație Weblate și aveți acces doar pentru a gestiona anumite proiecte (ca în Hosted Weblate), opțiunile de gestionare a controlului accesului sunt limitate la următoarele setări. Dacă nu aveți nevoie de o configurare complexă, acestea sunt suficiente pentru dumneavoastră.

Control acces proiect

Notă

Această funcție nu este disponibilă pentru proiectele care rulează planul Libre pe Hosted Weblate.

Puteți limita accesul utilizatorilor la proiecte individuale selectând o altă setare Controlul accesului. Opțiunile disponibile sunt:

public

Vizibil în mod public, traductibil pentru toți utilizatorii conectați.

Protejat

Vizibil în mod public, dar traductibil doar pentru utilizatorii selectați.

Privat

Vizibil și traductibil numai pentru utilizatorii selectați.

Personalizat

User management vor fi dezactivate; în mod implicit, tuturor utilizatorilor le este interzis să efectueze orice acțiune în proiect. Va trebui să configurați toate permisiunile folosind Control acces personalizat.

Acces control poate fi modificat în fila Acces din configurația (ManageSettings) a fiecărui proiect respectiv.

_images/project-access.png

Valoarea implicită poate fi modificată prin DEFAULT_ACCESS_CONTROL.

Notă

Chiar și în cazul proiectelor Private, unele informații despre proiectul dumneavoastră vor fi expuse: statisticile și rezumatul limbii pentru întreaga instanță vor include cifrele pentru toate proiectele, în ciuda setărilor de control al accesului. Numele proiectului dvs. și alte informații nu pot fi dezvăluite prin intermediul acestui sistem.

Notă

Setul real de permisiuni disponibile în mod implicit pentru utilizatori în proiectele Public, Protected și Private poate fi redefinit de administratorul instanței Weblate folosind custom settings.

Atenționare

Prin activarea controlului de acces Custom, Weblate va elimina toate special groups pe care le-a creat pentru un proiect selectat. Dacă faceți acest lucru fără a avea permisiunea de administrator pentru întreaga instanță Weblate, vă veți pierde instantaneu accesul la gestionarea proiectului.

Gestionarea controlului accesului pe proiect

Utilizatorii cu privilegiul Manage project access (see Listă de privilegii) pot gestiona utilizatori în proiecte cu control de acces non-Custom. Aceștia pot atribui utilizatori la unul dintre următoarele grupuri.

Pentru proiecte Public, Protected and Private:

Administrare

Include toate permisiunile disponibile pentru proiect.

Revizuire (numai dacă review workflow este activat)

Poate aproba traducerile în timpul revizuirii.

Numai pentru proiectele Protected și Private:

Tradu

Poate traduce proiectul și poate încărca traducerile făcute offline.

Surse

Poate edita șirurile de surse (dacă este permis în project settings) și informații despre șirurile de surse.

Limbi

Poate gestiona limbile traduse (adăugarea sau eliminarea traducerilor).

Glosar

Se poate gestiona glosarul (se pot adăuga sau elimina intrări, de asemenea se pot încărca).

Memorie

Poate gestiona memoria de traducere.

Capturi de ecran

Poate gestiona capturi de ecran (adăugați sau eliminați-le și asociați-le la șiruri de surse).

Versiune Control Sistem VCS

Poate gestiona VCS și poate accesa depozitul exportat.

Facturare

Poate accesa informațiile și setările de facturare (see Facturare).

Din păcate, deocamdată nu este posibil să modificați acest set predefinit de grupuri. De asemenea, în acest fel nu este posibil să se acorde doar câteva permisiuni suplimentare tuturor utilizatorilor.

Notă

Pentru controlul accesului non-Custom se definește de fapt o instanță a fiecărui grup descris mai sus pentru fiecare proiect. Numele real al acestor grupuri va fi Project@Group, afișat și în interfața de administrare Django în acest mod. Deși acestea nu pot fi editate din interfața de utilizator Weblate.

_images/manage-users.png

Aceste caracteristici sunt disponibile pe pagina Access control, care poate fi accesată din meniul proiectului ManageUsers.

Invitație utilizator nou

De asemenea, pe lângă adăugarea unui utilizator existent la proiect, este posibilă și invitarea altora noi. Orice utilizator nou va fi creat imediat, dar contul va rămâne inactiv până la conectarea cu ajutorul unui link din invitația trimisă prin e-mail. Nu este necesar să aveți privilegii la nivelul întregului site pentru a face acest lucru, permisiunea de gestionare a accesului pe domeniul de aplicare al proiectului (e.g. a membership in the Administration group).

Sugestie

În cazul în care utilizatorul invitat a ratat valabilitatea invitației, acesta își poate seta parola folosind adresa de e-mail invitată în formularul de resetare a parolei, deoarece contul este deja creat.

Nou în versiunea 3.11: Este posibil să se retrimită e-mailul pentru invitațiile utilizatorilor (invalidând orice invitație trimisă anterior).

Același tip de invitații sunt disponibile la nivelul întregului site de la : ref:interfața de administrare <management-interface> din fila Users.

Utilizator blocat

Nou în versiunea 4.7.

În cazul în care unii utilizatori se comportă urât în proiectul tău, ai opțiunea de a-i bloca să contribuie. Utilizatorul blocat va putea în continuare să vadă proiectul, dacă are permisiuni în acest sens, dar nu va putea contribui.

Gestionarea permisiunilor per proiect

Puteți seta proiectele dvs. la Protected sau Private și manage users per-proiect în interfața de utilizator Weblate.

În mod implicit, acest lucru împiedică Weblate să acorde accesul oferit de Users și Viewers default groups din cauza configurației proprii a acestor grupuri. Acest lucru nu vă împiedică să acordați permisiuni pentru aceste proiecte la nivelul întregului site prin modificarea grupurilor implicite, prin crearea unuia nou sau prin crearea unor setări personalizate suplimentare pentru componente individuale, așa cum este descris în Control acces personalizat de mai jos.

Unul dintre principalele avantaje ale gestionării permisiunilor prin intermediul interfeței de utilizator Weblate este că puteți delega acest lucru altor utilizatori fără a le acorda privilegiul de superutilizator. Pentru a face acest lucru, adăugați-i la grupul Administration al proiectului.

Control acces personalizat

Notă

Această funcție nu este disponibilă pentru proiectele care rulează planul Libre pe Hosted Weblate.

Sistemul de permisiuni se bazează pe grupuri și roluri, unde rolurile definesc un set de permisiuni, iar grupurile le leagă de utilizatori și traduceri, vezi Utilizatori, roluri, grupuri și permisiuni pentru mai multe detalii.

Cele mai puternice caracteristici ale sistemului de control al accesului la Weblate sunt deocamdată disponibile doar prin intermediul interfeței de administrare Django. O puteți utiliza pentru a gestiona permisiunile oricărui proiect. Nu trebuie neapărat să o comutați la Custom controlul accesului pentru a o utiliza. Cu toate acestea, trebuie să aveți privilegii de superutilizator pentru a o utiliza.

Dacă nu vă interesează detaliile implementării și doriți doar să creați o configurație suficient de simplă bazată pe valorile implicite sau dacă nu aveți acces la întreaga instalație Weblate la nivelul întregului site (ca în Hosted Weblate), vă rugăm să consultați secțiunea Cotrol acces simplu.

Configurații comune

Această secțiune conține o prezentare generală a unor configurații comune care ar putea să vă intereseze.

Gestionarea permisiunilor la nivelul întregului site

Pentru a gestiona simultan permisiunile pentru o întreagă instanță, adăugați utilizatorii la grupurile corespunzătoare default groups:

  • Utilizatori (acest lucru este făcut în mod implicit de către asignarea automată a grupului).

  • Revizori (dacă folosiți review workflow cu revizori dedicați).

  • Managers (dacă doriți să delegați majoritatea operațiunilor de gestionare altcuiva).

Ar trebui să păstrați toate proiectele configurate ca Public (see Control acces proiect)), în caz contrar permisiunile la nivel de site oferite de apartenența la grupurile Users și Reviewers nu vor avea niciun efect.

De asemenea, puteți acorda anumite permisiuni suplimentare la alegerea dumneavoastră grupurilor implicite. De exemplu, este posibil să doriți să acordați permisiunea de a gestiona capturi de ecran tuturor „Utilizatorilor”.

De asemenea, puteți defini noi grupuri personalizate. Dacă doriți să continuați să gestionați permisiunile la nivelul întregului site pentru aceste grupuri, alegeți o valoare corespunzătoare pentru Project selection (e.g. All projects or All public projects).

Permisiuni personalizate pentru limbi, componente sau proiecte

Puteți crea propriile grupuri dedicate pentru a gestiona permisiunile pentru obiecte distincte, cum ar fi limbile, componentele și proiectele. Deși aceste grupuri pot acorda doar privilegii suplimentare, nu puteți revoca nicio permisiune acordată de grupurile la nivel de site sau pe proiect prin adăugarea unui alt grup personalizat.

Exemplu:

Dacă doriți (indiferent de motiv) să permiteți traducerea într-o anumită limbă (să spunem Cehă) doar pentru un set închis de traducători de încredere, în timp ce traducerile în alte limbi rămân publice, va trebui să faceți acest lucru:

  1. Eliminați permisiunea de a traduce în Cehă de la toți utilizatorii. În configurația implicită, acest lucru se poate face modificând Users default group.

    Grup Utilizatori

    Selectarea limbii

    Cum este definit

    Limbi

    Toate în afară de Cehă

  1. Adăugați un grup dedicat pentru traducătorii din Cehă.

    Grupul Traducători de limba cehă

    Roluri

    Utilizatori puternici

    Selecția proiectului

    Toate proiectele publice

    Selectarea limbii

    Cum este definit

    Limbi

    Cehă

  1. Adăugați în acest grup utilizatorii cărora doriți să le acordați permisiuni.

După cum puteți vedea, gestionarea permisiunilor în acest mod este puternică, dar poate fi o sarcină destul de plictisitoare. Nu o puteți delega unui alt utilizator, cu excepția cazului în care acordați permisiuni de superutilizator.

Utilizatori, roluri, grupuri și permisiuni

Modelele de autentificare constau din mai multe obiecte:

Permisiuni

Permisiune individuală definită de Weblate. Permisiunile nu pot fi atribuite utilizatorilor. Acest lucru se poate face numai prin atribuirea de roluri.

Rol

Un rol definește un set de permisiuni. Acest lucru permite reutilizarea acestor seturi în mai multe locuri, facilitând administrarea.

Utilizator

Utilizatorul poate face parte din mai multe grupuri.

Grup

Gruparea conectează rolurile, utilizatorii și obiectele de autentificare (proiecte, limbi și liste de componente).

graph auth { "User" -- "Group"; "Group" -- "Role"; "Role" -- "Permission"; "Group" -- "Project"; "Group" -- "Language"; "Group" -- "Components"; "Group" -- "Component list"; }

Notă

Un grup poate să nu aibă niciun rol atribuit, în acest caz se presupune că oricine are acces la parcurgerea proiectului (a se vedea mai jos).

Acces pentru navigarea la un proiect

Un utilizator trebuie să fie membru al unui grup legat de proiect sau de orice componentă din cadrul proiectului respectiv. Este suficient să fii membru, nu sunt necesare permisiuni specifice pentru a naviga în proiect (acest lucru este utilizat în grupul implicit Viewers, a se vedea Lista de grupuri).

Acces pentru navigarea la o componentă

Un utilizator poate accesa componente fără restricții odată ce poate accesa proiectul componentelor (și va avea toate permisiunile care i-au fost acordate pentru proiect). Cu Acces restricționat activat, accesul la componentă necesită permisiuni explicite pentru aceasta (sau pentru o listă de componente în care se află componenta).

Scopul grupurilor

Domeniul de aplicare al permisiunii atribuite de rolurile din grupuri se aplică în conformitate cu următoarele reguli:

  • Dacă grupul specifică orice Listă de componente, toate permisiunile acordate membrilor acelui grup sunt acordate pentru toate componentele din listele de componente atașate grupului, iar un acces fără permisiuni suplimentare este acordat pentru toate proiectele în care se află aceste componente. Componente și Proiecte sunt ignorate.

  • În cazul în care grupul specifică orice Components, toate permisiunile acordate membrilor acelui grup sunt acordate pentru toate componentele atașate grupului, iar un acces fără permisiuni suplimentare este acordat pentru toate proiectele în care se află aceste componente. Projects este ignorat.

  • În caz contrar, dacă grupul specifică orice Proiecte, fie prin enumerarea directă a acestora, fie prin faptul că Selecția proiectelor este setată la o valoare precum Toate proiectele publice, toate aceste permisiuni se aplică tuturor proiectelor, ceea ce acordă efectiv aceleași permisiuni de acces la toate proiectele componente fără restricții.

  • Restricțiile impuse de Languages ale unui grup sunt aplicate separat, atunci când se verifică dacă un utilizator are acces pentru a efectua anumite acțiuni. Mai exact, se aplică numai acțiunilor direct legate de procesul de traducere în sine, cum ar fi revizuirea, salvarea traducerilor, adăugarea de sugestii etc.

Sugestie

Utilizați Selecție limbă sau Selecție proiect pentru a automatiza includerea tuturor limbilor sau proiectelor.

Exemplu:

Să spunem că există un proiect foo cu componentele: foo/bar și foo/baz și următorul grup:

Grupul Spanish Administratori-Revizori

Roluri

Revizuire șiruri de caractere, Gestionare depozit

Componente

foo/bar

Limbi

Spaniolă

Membrii acestui grup vor avea următoarele permisiuni (presupunând setările implicite ale rolului):

  • Acces general (navigare) la întregul proiect foo, inclusiv la ambele componente din el: foo/bar și foo/baz.

  • Revizuirea șirurilor de caractere în traducerea spaniolă foo/bar (nu în altă parte).

  • Gestionați VCS pentru întregul depozit foo/bar, de exemplu, confirmați modificările în așteptare făcute de traducători pentru toate limbile.

Atribuirea automată a grupului

În partea de jos a paginii de editare Group din Interfața de administrare Django, puteți specifica Asemnări automate de grup, care este o listă de expresii regulate utilizate pentru a atribui automat utilizatorii nou creați unui grup pe baza adreselor de e-mail ale acestora. Această atribuire are loc numai la crearea contului.

Cel mai frecvent caz de utilizare a acestei funcții este acela de a atribui toți utilizatorii noi unui grup implicit. Pentru a face acest lucru, probabil că veți dori să păstrați valoarea implicită (^.*$) în câmpul expresiei regulate. Un alt caz de utilizare pentru această opțiune ar putea fi acela de a acorda în mod implicit anumite privilegii suplimentare angajaților companiei dumneavoastră. Presupunând că toți aceștia folosesc adrese de e-mail corporative pe domeniul dumneavoastră, acest lucru poate fi realizat cu o expresie de tipul ^.*@mycompany.com.

Notă

Atribuirea automată a grupurilor la Utilizatori și Vizualizatori este întotdeauna recreată atunci când se face upgrade de la o versiune Weblate la alta. Dacă doriți să o dezactivați, setați expresia regulată la ^$ (care nu se va potrivi cu nimic).

Notă

Deocamdată, nu există nicio modalitate de a adăuga în masă utilizatori deja existenți la un grup prin intermediul interfeței cu utilizatorul. Pentru aceasta, puteți recurge la utilizarea REST API.

Grupuri și roluri implicite

După instalare, este creat un set implicit de grupuri (a se vedea Lista de grupuri).

Aceste roluri și grupuri sunt create la instalare. Rolurile încorporate sunt întotdeauna actualizate prin migrarea bazei de date în momentul actualizării. De fapt, nu le puteți modifica; vă rugăm să definiți un rol nou dacă doriți să vă definiți propriul set de permisiuni.

Listă de privilegii
Facturare (a se vedea Facturare)

Vizualizare informații de facturare [Administrație, Facturare]

Modificări

Descărcați modificările [Administrație]

Comentarii

Postați un comentariu [Administration, Edit source, Power user, Review strings, Translate]

Ștergeți comentariul [Administration]

Componenta

Editarea setărilor componentelor [Administration]

Blocarea componentei, împiedicând traducerile [Administration]

Glosar

Adăugați o intrare în glosar [Administration, Manage glossary, Power user]

Editarea intrării în glosar [Administration, Manage glossary, Power user]

Ștergeți intrarea în glosar [Administration, Manage glossary, Power user]

Încărcați intrările din glosar [Administration, Manage glossary, Power user]

Sugestii automate

Utilizați sugestii automate [Administration, Edit source, Power user, Review strings, Translate]

Memorie de traducere

Editarea memoriei de traducere [Administrare, Gestionare memorie de traducere]

Ștergerea memoriei de traducere [Administrare, Gestionare memorie de traducere]

Proiecte

Editarea setărilor proiectului [Administration]

Gestionați accesul la proiect [Administration]

Rapoarte

Descărcați rapoarte [Administration]

Capturi de ecran

Adăugați captură de ecran [Administration, Manage screenshots]

Editare captură de ecran [Administration, Manage screenshots]

Ștergere captură de ecran [Administration, Manage screenshots]

Șiruri de surse

Editarea informațiilor suplimentare despre șiruri de caractere [Administration, Edit source]

Șiruri de caractere

Adăugați un nou șir [Administration]

Eliminați un șir de caractere [Administration]

Respingeți verificarea nereușită [Administration, Edit source, Power user, Review strings, Translate]

Editarea șirurilor de caractere [Administration, Edit source, Power user, Review strings, Translate]

Șiruri de revizuire [Administration, Review strings]

Editați șirul atunci când sugestiile sunt aplicate [Administration, Review strings]

Editarea șirurilor de surse [Administration, Edit source, Power user]

Sugestii

Acceptă sugestia [Administration, Edit source, Power user, Review strings, Translate]

Adăugare sugestie [Administration, Edit source, Add suggestion, Power user, Review strings, Translate]

Ștergeți sugestia [Administration, Power user]

Votați sugestia [Administrație, Editare sursă, Putere utilizator, Revizuirea șirurilor de caractere, Traducere]

Traduceri

Adăugați o limbă pentru traducere [Administration, Power user, Manage languages]

Efectuarea traducerii automate [Administration, Manage languages]

Ștergeți traducerea existentă [Administration, Manage languages]

Download translation file [Administration, Edit source, Access repository, Power user, Review strings, Translate, Manage languages]

Adăugați mai multe limbi pentru traducere [Administration, Manage languages]

Încărcături

Definiți autorul traducerii încărcate [Administrație]

Suprascrieți șirurile existente cu încărcare [Administration, Edit source, Power user, Review strings, Translate]

Încărcați traduceri [Administrare, Editare sursă, Putere utilizator, Revizuire șiruri, Traducere]

Versiune Control Sistem VCS

Accesarea depozitului intern [Administration, Access repository, Power user, Manage repository]

Trimiterea modificărilor în depozitul intern [Administration, Manage repository]

Schimbare din depozitul intern [Administration, Manage repository]

Resetarea modificărilor din depozitul intern [Administration, Manage repository]

Vezi locația depozitului din amonte [Administration, Access repository, Power user, Manage repository]

Actualizarea depozitului intern [Administration, Manage repository]

Privilegii la nivelul întregului site

Utilizați interfața de gestionare

Adăugați proiecte noi

Adăugați definiții de limbă

Gestionați definițiile de limbă

Gestionați grupurile

Gestionați utilizatorii

Gestionați rolurile

Gestionați anunțurile

Gestionați memoria de traducere

Gestionați listele de componente

Notă

Nu se acordă privilegii la nivelul întregului site pentru niciun rol implicit. Acestea sunt puternice și destul de apropiate de statutul de superutilizator. Cele mai multe dintre ele afectează toate proiectele din instalarea Weblate.

Lista de grupuri

Următoarele grupuri sunt create la instalare (or after executing setupgroups) și puteți să le modificați. Cu toate acestea, migrația le va recrea dacă le ștergeți sau le redenumiți.

Oaspeți

Definește permisiunile pentru utilizatorii neautentificați.

Acest grup conține numai utilizatori anonimi (see ANONYMOUS_USER_NAME).

Puteți elimina rolurile din acest grup pentru a limita permisiunile pentru utilizatorii neautentificați.

Roluri implicite: Adaugați sugestii, Accesați depozitul

Vizualizatori

Acest rol asigură vizibilitatea proiectelor publice pentru toți utilizatorii. În mod implicit, toți utilizatorii sunt membri ai acestui grup.

În mod implicit, automatic group assignment face ca toate conturile noi să devină membri ai acestui grup atunci când se alătură.

Roluri implicite: niciunul

Utilizatori

Grup implicit pentru toți utilizatorii.

În mod implicit, automatic group assignment face ca toate conturile noi să devină membri ai acestui grup atunci când se alătură.

Roluri implicite: Power user

Revizorii

Grup pentru recenzori (see Fluxuri de lucru de traducere).

Roluri implicite: Review strings

Manageri

Grup pentru administratori.

Roluri implicite: Administration

Atenționare

Nu eliminați niciodată grupurile și utilizatorii Weblate predefinite, deoarece acest lucru poate duce la probleme neașteptate! Dacă nu aveți nevoie de ei, puteți elimina în schimb toate privilegiile lor.

Restricții suplimentare de acces

Dacă doriți să folosiți instalația Weblate într-un mod mai puțin public, adică să permiteți noilor utilizatori doar pe bază de invitație, acest lucru se poate face prin configurarea Weblate astfel încât doar utilizatorii cunoscuți să aibă acces la el. Pentru a face acest lucru, puteți seta REGISTRATION_OPEN la False pentru a împiedica înregistrarea oricăror utilizatori noi și setați REQUIRE_LOGIN la /.* pentru a solicita autentificarea pentru a accesa toate paginile site-ului. Aceasta este practic modalitatea de a bloca instalarea Weblate.

Sugestie

Puteți utiliza built-in invitations pentru a adăuga noi utilizatori.

Proiecte de traducere

Organizarea traducerii

Weblate organizează conținutul VCS traductibil al proiectului/componentelor într-o structură arborescentă.

  • Obiectul de nivel inferior este Configurația proiectului, care ar trebui să conțină toate traducerile care aparțin împreună (de exemplu, traducerea unei aplicații în mai multe versiuni și/sau documentația însoțitoare).

  • La nivelul superior, Configurația componentei, care este de fapt componenta de tradus, se definește depozitul VCS de utilizat și masca de fișiere de tradus.

  • Deasupra Configurația componentei se află traduceri individuale, gestionate automat de Weblate pe măsură ce fișierele de traducere (care se potrivesc cu Masca de fișier definit în Configurația componentei) apar în depozitul VCS.

Weblate suportă o gamă largă de formate de traducere (atât cele bilingve, cât și cele monolingve) acceptate de Translate Toolkit, vezi Formate de fișiere acceptate.

Notă

Puteți partaja depozite VCS clonate folosind URL-uri interne Weblate. Utilizarea acestei funcții este foarte recomandată atunci când aveți mai multe componente care partajează același VCS. Aceasta îmbunătățește performanța și scade spațiul pe disc necesar.

Adăugarea de proiecte și componente de traducere

Schimbat în versiunea 3.2: Este inclusă o interfață pentru adăugarea de proiecte și componente și nu mai trebuie să folosiți Interfața de administrare Django.

Schimbat în versiunea 3.4: Procesul de adăugare a componentelor este acum în mai multe etape, cu descoperirea automată a majorității parametrilor.

În funcție de permisiunile dumneavoastră, pot fi create noi proiecte de traducere și componente. Acest lucru este întotdeauna permis pentru utilizatorii cu permisiunea Adaugă proiecte noi, iar dacă instanța ta folosește facturarea (de exemplu, cum ar fi https://hosted.weblate.org/, vezi Facturare), le poți crea, de asemenea, pe baza alocației pentru planurile tale din contul de utilizator care gestionează facturarea.

Poți vizualiza planul tău de facturare actual pe o pagină separată:

_images/user-billing.png

Crearea proiectului poate fi inițiată de aici, sau folosind meniul din bara de navigare, completând informațiile de bază despre proiectul de traducere până la adăugarea completă a acestuia:

_images/user-add-project.png

După crearea proiectului, veți fi direcționat direct către pagina proiectului:

_images/user-add-project-done.png

Crearea unei noi componente de traducere poate fi inițiată cu un singur clic acolo. Procesul de creare a unei componente este în mai multe etape și detectează automat majoritatea parametrilor de traducere. Există mai multe abordări pentru crearea unei componente:

Din controlul versiunilor

Creează o componentă din depozitul de control al versiunilor de la distanță.

Din componenta existentă

Creează o componentă suplimentară la cea existentă prin alegerea unor fișiere diferite.

Sucursală suplimentară

Creează o componentă suplimentară la cea existentă, dar pentru o ramură diferită.

Încărcați fișiere de traducere

Încărcați fișierele de traducere în Weblate în cazul în care nu aveți control al versiunilor sau nu doriți să îl integrați cu Weblate. Puteți actualiza ulterior conținutul utilizând interfața web sau Weblate’s REST API.

Traduceți documentul

Încărcați un singur document sau fișier de traducere și traduceți-l.

Începeți de la zero

Creați un proiect de traducere gol și adăugați șiruri de caractere manual.

Odată ce aveți componente de traducere existente, puteți, de asemenea, să adăugați cu ușurință altele noi pentru fișiere sau ramuri suplimentare utilizând același depozit.

Mai întâi trebuie să completați numele și locația depozitului:

_images/user-add-component-init.png

Pe pagina următoare, vi se prezintă o listă de resurse traductibile descoperite:

_images/user-add-component-discovery.png

Ca ultim pas, treceți în revistă informațiile despre componenta de traducere și completați detaliile opționale:

_images/user-add-component.png

Configurația proiectului

Creați un proiect de traducere și apoi adăugați o nouă componentă pentru traducere în cadrul acestuia. Proiectul este ca un raft, în care sunt stivuite traducerile reale. Toate componentele din același proiect au în comun sugestiile și dicționarul lor; de asemenea, traducerile sunt propagate automat prin toate componentele dintr-un singur proiect (dacă nu sunt dezactivate în configurația componentei), a se vedea Memorie de traducere.

Aceste atribute de bază stabilesc și informează traducătorii cu privire la un proiect:

Denumire proiect

Verbose project name, utilizat pentru a afișa numele proiectului.

URL slug

Nume de proiect potrivit pentru URL-uri.

Website-ul proiectului

URL-ul unde traducătorii pot găsi mai multe informații despre proiect.

Acesta este un parametru obligatoriu, dacă nu este dezactivat prin WEBSITE_REQUIRED.

Instrucțiuni de traducere

Text describing localization process in the project, and any other information useful for translators. Markdown can be used for text formatting or inserting links.

Setați antetul „Language-Team”

Dacă Weblate ar trebui să gestioneze antetul Language-Team (deocamdată, aceasta este o caracteristică GNU gettext).

Utilizați memoria de traducere partajată

Dacă se utilizează memoria de traducere partajată, a se vedea Memorie partajată de traducere pentru mai multe detalii.

Valoarea implicită este determinată de DEFAULT_SHARED_TM.

Contribuie la memoria de traducere partajată

Dacă se dorește contribuția la memoria de traducere partajată, a se vedea Memorie partajată de traducere pentru mai multe detalii.

Valoarea implicită este determinată de DEFAULT_SHARED_TM.

Controlul accesului

Configurați controlul accesului pentru fiecare proiect, consultați Control acces proiect pentru mai multe detalii.

Valoarea implicită poate fi modificată prin DEFAULT_ACCESS_CONTROL.

Activați recenzii

Activați fluxul de revizuire pentru traduceri, vezi Recenzori dedicați.

Activați revizuirile sursei

Activați fluxul de lucru pentru revizuirea șirurilor de surse, a se vedea Sursa șiruri de recenzii.

Activați cârligele

Dacă pentru acest depozit trebuie să se utilizeze Cârlige de notificare neautentificate.

Aliasuri lingvistice

Definiți cartografierea codurilor lingvistice la importul de traduceri în Weblate. Utilizați această opțiune atunci când codurile de limbă nu sunt consecvente în depozitele dvs. și doriți să obțineți o vizualizare consecventă în Weblate sau în cazul în care doriți să utilizați o denumire nestandardizată a fișierelor de traducere.

Cazul tipic de utilizare ar putea fi cartografierea limbii engleze americane în engleză: en_US:en

Mai multe corespondențe care trebuie separate prin virgulă: en_GB:en,en_US:en

Folosirea unui cod non-standard: ia_FOO:ia

Sugestie

Codurile de limbă sunt puse în corespondență atunci când se potrivesc fișierele de traducere, iar potrivirile sunt sensibile la majuscule și minuscule, așa că asigurați-vă că folosiți codurile limbilor sursă în aceeași formă ca și în numele fișierelor.

Configurația componentei

O componentă este o grupare de ceva pentru traducere. Introduceți o locație a depozitului VCS și o mască de fișiere pentru care doriți să traduceți fișierele, iar Weblate preia automat din acest VCS și găsește toate fișierele traductibile corespunzătoare.

Puteți găsi câteva exemple de configurații tipice în secțiunea Formate de fișiere acceptate.

Notă

Se recomandă să păstrezi componentele de traducere la o dimensiune rezonabilă - împarte traducerea în funcție de ceea ce are sens în cazul tău (aplicații individuale sau addon-uri, capitole de carte sau site-uri web).

Weblate gestionează cu ușurință traducerile cu 10.000 de șiruri de caractere, dar este mai greu de împărțit munca și de coordonat între traducători cu componente de traducere atât de mari.

În cazul în care definiția limbii pentru o traducere lipsește, se creează o definiție goală, denumită „cs_CZ (generat)”. Ar trebui să ajustați definiția și să raportați acest lucru autorilor Weblate, astfel încât limbile lipsă să poată fi incluse în următoarea versiune.

Componenta conține toți parametrii importanți pentru a lucra cu VCS și pentru a obține traduceri din acesta:

Denumirea componentei

Verbose component name, utilizat pentru a afișa numele componentei.

Componenta slug

Numele componentei potrivite pentru URL-uri.

Componenta proiectului

proiect din care face parte componenta.

Sistem de control al versiunilor

VCS de utilizat, vezi Integrarea controlului versiunilor pentru detalii.

Depozitul de cod sursă

Depozitul VCS utilizat pentru a extrage modificările.

Vezi și

Vezi Accesarea depozitelor pentru mai multe detalii despre specificarea URL-urilor.

Sugestie

Acesta poate fi fie un URL VCS real sau weblate://project/component indicând că depozitul trebuie partajat cu o altă componentă. A se vedea URL-uri interne Weblate pentru mai multe detalii.

URL de împingere a depozitului

URL-ul depozitului utilizat pentru împingere. Această setare este utilizată numai pentru Git și Mercurial, iar suportul pentru push este dezactivat pentru acestea atunci când este gol.

Vezi și

Vezi Accesarea depozitelor pentru mai multe detalii despre cum să specifici un URL de depozit și Împingerea modificărilor din Weblate pentru mai multe detalii despre împingerea modificărilor din Weblate.

Navigator de depozite

Adresa URL a browserului de depozit utilizat pentru afișarea fișierelor sursă (locația mesajelor utilizate). Dacă este gol, nu vor fi generate astfel de legături. Puteți utiliza Marcarea șablonului.

De exemplu, pe GitHub, utilizați ceva de genul: https://github.com/WeblateOrg/hello/blob/{{{branch}}/{{{filename}}#L{{{line}}

În cazul în care căile de acces sunt relative la dosare diferite (calea conține ..), este posibil să doriți să eliminați directorul principal prin filtrul parentdir (a se vedea Marcarea șablonului): https://github.com/WeblateOrg/hello/blob/{{{branch}}/{{{filename|parentdir}}}#L{{{line}}}

URL-ul depozitului exportat

URL-ul unde sunt exportate modificările efectuate de Weblate. Acest lucru este important atunci când Traducere continuă nu este utilizat sau atunci când este necesară fuzionarea manuală a modificărilor. Puteți utiliza Exportator Git pentru a automatiza acest lucru pentru depozitele Git.

Ramura de depozit

Ce ramură să verificați din VCS și unde să căutați traducerile.

Împingeți ramura

Branșă pentru împingerea modificărilor, lăsați gol pentru a folosi Ramura de depozit.

Notă

În prezent, acest lucru este acceptat numai pentru Git, GitLab și GitHub, fiind ignorat pentru alte integrări VCS.

Masca de fișier

Masca fișierelor de tradus, inclusiv calea de acces. Ar trebui să includă un „*” care să înlocuiască codul limbii (a se vedea Definiții lingvistice pentru informații despre modul în care este procesat acest cod). În cazul în care depozitul tău conține mai multe fișiere de traducere (de exemplu, mai multe domenii gettext), trebuie să creezi o componentă pentru fiecare dintre ele.

De exemplu po/*.po sau locale/*/LC_MESSAGES/django.po.

În cazul în care numele fișierului dvs. conține caractere speciale, cum ar fi [, ], acestea trebuie să fie scăpate ca [[] sau []].

Fișier de limbă de bază monolingvă

Fișier de bază care conține definițiile șirurilor de caractere pentru Componente monolingve.

Editarea fișierului de bază

Dacă se permite editarea fișierului de bază pentru Componente monolingve.

Fișier de limbaj intermediar

Fișier intermediar de limbă pentru Componente monolingve. În cele mai multe cazuri, acesta este un fișier de traducere furnizat de dezvoltatori și este utilizat la crearea șirurilor sursă reale.

Atunci când este setat, șirurile sursă se bazează pe acest fișier, dar toate celelalte limbi se bazează pe Fișier de limbă de bază monolingvă. În cazul în care șirul nu este tradus în limba sursă, traducerea în alte limbi este interzisă. Acest lucru oferă Poartă de calitate pentru șirurile sursă.

Șablon pentru traduceri noi

Fișier de bază utilizat pentru a genera noi traduceri, de exemplu, fișierul .pot cu gettext.

Sugestie

În multe formate monolingve, Weblate începe în mod implicit cu un fișier gol. Utilizați acest lucru în cazul în care doriți să aveți toate șirurile de caractere prezente cu o valoare goală atunci când creați o nouă traducere.

Formatul fișierului

Formatul fișierului de traducere, a se vedea și Formate de fișiere acceptate.

Adresa de raportare a erorilor din șirul sursă

Adresa de e-mail utilizată pentru raportarea erorilor din amonte. Această adresă va primi, de asemenea, notificări cu privire la orice comentarii despre șirul sursă făcute în Weblate.

Permiteți propagarea traducerii

Puteți dezactiva propagarea traducerilor către această componentă de la alte componente din cadrul aceluiași proiect. Acest lucru depinde de ceea ce traduceți; uneori este de dorit să folosiți o traducere de mai multe ori.

De obicei, este o idee bună să dezactivați această opțiune pentru traducerile monolingve, cu excepția cazului în care folosiți aceleași ID-uri pentru întregul proiect.

Valoarea implicită poate fi modificată prin DEFAULT_TRANSLATION_PROPAGATION.

Activați sugestiile

Dacă se acceptă sugestii de traducere pentru această componentă.

Votul prin sugestie

Activează votul pentru sugestii, vezi Votul prin sugestie.

Sugestii de autoacceptare

Acceptarea automată a sugestiilor votate, vezi Votul prin sugestie.

Steaguri de traducere

Personalizarea controalelor de calitate și a altor comportamente Weblate, vezi Personalizarea comportamentului cu ajutorul stegulețelor.

Controale forțate

Lista de verificări care nu pot fi ignorate, a se vedea Executarea controalelor.

Notă

Efectuarea verificării nu o activează automat, ci trebuie să o activați folosind Personalizarea comportamentului cu ajutorul stegulețelor în Steaguri de traducere sau Informații suplimentare despre șirurile sursă.

Licență de traducere

Licența traducerii (nu trebuie să fie aceeași cu cea a codului sursă).

Acord de colaborare

Acordul de utilizare care trebuie aprobat înainte ca un utilizator să poată traduce această componentă.

Adăugarea unei noi traduceri

Cum se gestionează cererile de creare de noi limbi. Opțiuni disponibile:

Contactează întreținătorii

Utilizatorul poate selecta limba dorită, iar responsabilii de proiect vor primi o notificare în acest sens. Depinde de ei să adauge (sau nu) limba în depozit.

Indicați instrucțiunile de traducere URL

Utilizatorului i se prezintă un link către o pagină care descrie procesul de inițiere a noilor traduceri. Utilizați această pagină în cazul în care se dorește un proces mai formal (de exemplu, formarea unei echipe de persoane înainte de a începe traducerea propriu-zisă).

Crearea unui nou fișier de limbă

Utilizatorul poate selecta limba, iar Weblate creează automat fișierul pentru aceasta și poate începe traducerea.

Dezactivați adăugarea de noi traduceri

Nu va exista nicio opțiune pentru utilizator de a începe o nouă traducere.

Sugestie

Administratorii proiectului pot adăuga noi traduceri, chiar dacă este dezactivat aici, atunci când este posibil (fie Șablon pentru traduceri noi, sau formatul fișierului acceptă pornirea de la un fișier gol).

Gestionați șirurile de caractere

Nou în versiunea 4.5.

Configurează dacă utilizatorilor din Weblate li se va permite să adauge noi șiruri de caractere și să le elimine pe cele existente. Ajustați acest lucru pentru a se potrivi cu fluxul de lucru al localizării - modul în care se presupune că vor fi introduse noile șiruri.

Pentru formatele bilingve, șirurile de caractere sunt de obicei extrase din codul sursă (de exemplu, prin utilizarea xgettext) și adăugarea de noi șiruri de caractere în Weblate ar trebui să fie dezactivată (acestea vor fi eliminate data viitoare când veți actualiza fișierele de traducere). În Weblate puteți gestiona șiruri de caractere pentru fiecare traducere și nu impune ca șirurile din toate traducerile să fie consecvente.

În cazul formatelor monolingve, șirurile de caractere sunt gestionate numai pe limba sursă și sunt adăugate sau eliminate automat în traduceri. Șirurile de caractere apar în fișierele de traducere odată ce sunt traduse.

Stil de cod lingvistic

Personalizați codul de limbă utilizat pentru a genera numele de fișier pentru traducerile create de Weblate.

Stil de fuziune

Puteți configura modul în care sunt gestionate actualizările din depozitul din upstream. Este posibil ca acest lucru să nu fie acceptat pentru unele VCS-uri. Pentru mai multe detalii, consultați Fuziune sau re-bază.

Valoarea implicită poate fi modificată prin DEFAULT_MERGE_STYLE.

Angajare, adăugare, ștergere, fuziune și adăugare de mesaje

Mesaj utilizat la confirmarea unei traduceri, a se vedea Marcarea șablonului.

Valoarea implicită poate fi modificată prin DEFAULT_ADD_MESSAGE, DEFAULT_ADDON_MESSAGE, DEFAULT_COMMIT_MESSAGE, DEFAULT_DELETE_MESSAGE, DEFAULT_DELETE_MESSAGE, DEFAULT_MERGE_MESSAGE.

Împingeți pe comitere

Dacă modificările acceptate ar trebui să fie transmise automat în depozitul din amonte. Atunci când este activată, împingerea este inițiată odată ce Weblate confirmă modificările în depozitul său de bază (a se vedea Angajări leneșe). Pentru a activa efectiv împingerea Repository push URL trebuie, de asemenea, să fie configurat.

Vârsta modificărilor care urmează să fie confirmate

Stabilește cât de vechi (în ore) trebuie să fie modificările înainte de a fi confirmate de o sarcină de fundal sau de comanda de gestionare commit_pending. Toate modificările dintr-o componentă sunt confirmate odată ce există cel puțin o modificare mai veche decât această perioadă.

Valoarea implicită poate fi modificată prin COMMIT_PENDING_HOURS.

Sugestie

Există și alte situații în care modificările în așteptare pot fi confirmate, vezi Angajări leneșe.

Blocare pe eroare

Blochează componenta (și componentele legate, a se vedea URL-uri interne Weblate) la primul push sau merge eșuat în depozitul său din amonte, sau la prima extragere din acesta. Astfel se evită adăugarea altor conflicte, care ar trebui rezolvate manual.

Componenta va fi deblocată automat atunci când nu mai există erori de depozit.

Limba sursă

Limba utilizată pentru șirurile sursă. Schimbați acest lucru dacă traduceți din altă limbă decât engleza.

Sugestie

În cazul în care traduceți fișiere bilingve din limba engleză, dar doriți să puteți efectua corecturi și în traducerea în limba engleză, alegeți English (Developer) ca limbă sursă pentru a evita conflictul dintre numele limbii sursă și cel al traducerii existente.

Pentru traducerile monolingve, puteți utiliza traducerea intermediară în acest caz, a se vedea Fișier de limbaj intermediar.

Filtru lingvistic

Expresie regulată utilizată pentru a filtra traducerea la scanarea pentru filemask. Poate fi utilizată pentru a limita lista de limbi gestionate de Weblate.

Notă

Trebuie să enumerați codurile de limbă așa cum apar ele în numele fișierului.

Câteva exemple de filtrare:

Descriere filtru

Expresie regulată

Doar limbile selectate

^(cs|de|es)$

Excludeți limbile

^(?!(it|fr)$).+$

Filtrează numai codurile de două litere

^..$

Excludeți fișierele care nu sunt de limbă

^(?!(blank)$).+$

Include toate fișierele (implicit)

^[^.]+$

Variante expresie regulată

Expresie regulată utilizată pentru a determina variantele unui șir de caractere, a se vedea Variante de șiruri.

Notă

Majoritatea câmpurilor pot fi editate de către proprietarii sau managerii de proiect, în interfața Weblate.

Prioritate

Componentele cu prioritate mai mare sunt oferite mai întâi traducătorilor.

Acces restricționat

În mod implicit, componenta este vizibilă pentru orice persoană care are acces la proiect, chiar dacă persoana respectivă nu poate efectua nicio modificare în componentă. Acest lucru facilitează menținerea coerenței traducerii în cadrul proiectului.

Restricționarea accesului la nivelul unei componente sau al unei liste de componente preia permisiunea de acces la o componentă, indiferent de permisiunile de la nivelul proiectului. Va trebui să acordați în mod explicit accesul la aceasta. Acest lucru se poate face prin acordarea accesului la un nou grup de utilizatori și introducerea utilizatorilor în acesta sau prin utilizarea grupurilor de control al accesului custom sau private implicite.

Valoarea implicită poate fi modificată în DEFAULT_RESTRICTED_COMPONENT.

Sugestie

Acest lucru este valabil și pentru administratorii de proiect - vă rugăm să vă asigurați că nu veți pierde accesul la componentă după schimbarea statutului.

Cota în proiecte

Puteți alege proiecte suplimentare în care componenta va fi vizibilă. Util pentru bibliotecile partajate pe care le utilizați în mai multe proiecte.

Notă

Partajarea unei componente nu modifică controlul accesului la aceasta. O face doar vizibilă atunci când navigați în alte proiecte. Utilizatorii trebuie să aibă în continuare acces la componenta propriu-zisă pentru a o parcurge sau a o traduce.

Utilizarea ca glosar

Nou în versiunea 4.5.

Permite utilizarea acestei componente ca glosar. Puteți configura modul în care va fi listată folosind Glosar culoare.

Glosarul va fi accesibil în toate proiectele definite de Cota în proiecte.

Se recomandă să se activeze Gestionați șirurile de caractere pe glosare pentru a permite adăugarea de noi cuvinte la acestea.

Vezi și

Glosar

Glosar culoare

Culoarea de afișare pentru un glosar utilizat la afișarea corespondențelor de cuvinte.

Marcarea șablonului

Weblate utilizează un limbaj de marcare simplu în mai multe locuri unde este necesară redarea textului. Acesta se bazează pe The Django template language, astfel încât poate fi destul de puternic.

În prezent, acesta este utilizat în:

Următoarele variabile sunt disponibile în șabloanele componentelor:

{{ language_code }}

Codul limbii

{{ language_name }}

Numele limbii

{{ component_name }}

Denumirea componentei

{{ component_slug }}

Componenta slug

{{ project_name }}

Denumire proiect

{{ project_slug }}

Limbajul proiectului

{{ url }}

Traducere URL

{{ filename }}

Numele fișierului de traducere

{{ stats }}

Statisticile de traducere, care au și alte atribute, exemple mai jos.

{{ stats.all }}

Numărul total de șiruri de caractere

{{ stats.fuzzy }}

Numărul de șiruri care trebuie revizuite

{{ stats.fuzzy_percent }}

Procentul de șiruri de caractere care trebuie revizuite

{{ stats.translated }}

Număr de șiruri de caractere traduse

{{ stats.translated_percent }}

Șiruri de caractere traduse procentual

{{ stats.allchecks }}

Numărul de șiruri cu verificări nereușite

{{ stats.allchecks_percent }}

Procentul de șiruri cu verificări nereușite

{{ author }}

Autorul confirmării curente, disponibil numai în domeniul de aplicare al confirmării.

{{ addon_name }}

Numele addonului executat în prezent, disponibil numai în mesajul de confirmare a addonului.

Următoarele variabile sunt disponibile în browserul de depozit sau în șabloanele editorului:

{{branch}}

branșa actuală

{{line}}

linia din fișierul

{{filename}}

nume de fișier, puteți, de asemenea, să eliminați părțile din față folosind filtrul parentdir, de exemplu {{filename|parentdir}}

Le puteți combina cu filtre:

{{ component|title }}

Puteți utiliza condiții:

{% if stats.translated_percent > 80 %}Well translated!{% endif %}

Există o etichetă suplimentară disponibilă pentru înlocuirea caracterelor:

{% replace component "-" " " %}

Îl puteți combina cu filtre:

{% replace component|capfirst "-" " " %}

Există, de asemenea, un filtru suplimentar pentru manipularea numelor de fișiere:

Directory of a file: {{ filename|dirname }}
File without extension: {{ filename|stripext }}
File in parent dir: {{ filename|parentdir }}
It can be used multiple times:  {{ filename|parentdir|parentdir }}

…și alte caracteristici ale șabloanelor Django.

Viteza de import

Obținerea depozitului VCS și importul traducerilor în Weblate poate fi un proces de lungă durată, în funcție de mărimea traducerilor. Iată câteva sfaturi:

Optimizarea configurației

Configurația implicită este utilă pentru testarea și depanarea Weblate, în timp ce pentru o configurație de producție, ar trebui să faceți unele ajustări. Multe dintre ele au un impact destul de mare asupra performanței. Vă rugăm să consultați Configurarea producției pentru mai multe detalii, în special:

Verificați limitele resurselor

Dacă importați traduceri sau depozite uriașe, s-ar putea să vă confruntați cu limitări de resurse ale serverului dumneavoastră.

  • Verificați cantitatea de memorie liberă, deoarece fișierele de traducere stocate în memoria cache de către sistemul de operare vor îmbunătăți considerabil performanța.

  • Operațiunile pe disc ar putea fi un blocaj dacă există o mulțime de șiruri de procesat - discul este solicitat atât de Weblate, cât și de baza de date.

  • Nucleele CPU suplimentare pot ajuta la îmbunătățirea performanței sarcinilor de fundal (vezi Sarcini de fundal folosind Celery).

Dezactivarea verificărilor inutile

Unele controale de calitate pot fi destul de costisitoare și, dacă nu sunt necesare, vă pot economisi timp în timpul importului dacă sunt omise. Consultați CHECK_LIST pentru informații despre configurare.

Crearea automată a componentelor

În cazul în care proiectul tău are zeci de fișiere de traducere (de exemplu, pentru diferite domenii gettext sau părți ale aplicațiilor Android), este posibil să dorești să le imporți automat. Acest lucru poate fi realizat fie din linia de comandă, utilizând import_project sau import_json, fie prin instalarea addonului Descoperirea componentelor.

Pentru a utiliza addon-ul, trebuie mai întâi să creați o componentă pentru un fișier de traducere (alegeți-l pe cel care este cel mai puțin probabil să fie redenumit sau eliminat în viitor) și instalați addon-ul pe această componentă.

Pentru comenzile de gestionare, trebuie să creați un proiect care va conține toate componentele și apoi să executați import_project sau import_json.

Definiții lingvistice

Pentru a prezenta corect diferite traduceri, sunt necesare informații despre numele limbii, direcția textului, definițiile pluralului și codul limbii.

Parsarea codurilor lingvistice

În timp ce analizează traducerile, Weblate încearcă să mapeze codul limbii (de obicei, codul ISO 639-1) la orice obiect lingvistic existent.

Puteți ajusta în continuare această cartografiere la nivel de proiect prin Aliasuri lingvistice.

În cazul în care nu se găsește o corespondență exactă, se va încerca să o încadrăm cât mai bine într-o limbă existentă. Se încearcă următorii pași:

  • Căutări care nu țin cont de majuscule și minuscule.

  • Normalizarea sublinierilor și a liniuțelor.

  • Căutarea aliasurilor de limbă încorporate.

  • Căutarea după numele limbii.

  • Ignorarea codului de țară implicit pentru o anumită limbă - alegerea cs în loc de cs_CZ.

În cazul în care nici aceasta nu reușește, va fi creată o nouă definiție a limbii folosind valorile implicite (direcția textului de la stânga la dreapta, un plural). Limba creată automat cu codul xx_XX se va numi xx_XX (generat). S-ar putea să doriți să schimbați acest lucru în interfața de administrare mai târziu, (vezi Modificarea definițiilor lingvistice) și să raportați acest lucru la trackerul de probleme (vezi Contribuția la Weblate), astfel încât definiția corectă să poată fi adăugată la viitoarea versiune Weblate.

Sugestie

În cazul în care vedeți ceva nedorit ca limbă, este posibil să doriți să ajustați Filtru lingvistic pentru a ignora un astfel de fișier atunci când analizați traducerile.

Modificarea definițiilor lingvistice

Puteți modifica definițiile limbilor în interfața languages (/languages/ URL).

În timpul editării, asigurați-vă că toate câmpurile sunt corecte (în special pluralul și direcția textului), în caz contrar, traducătorii nu vor putea edita corect aceste traduceri.

Definiții lingvistice încorporate

În Weblate sunt incluse definiții pentru aproximativ 600 de limbi, iar lista este extinsă în fiecare versiune. Ori de câte ori Weblate este actualizat (mai precis ori de câte ori se execută weblate migrate, vezi Instrucțiuni generice de actualizare), baza de date a limbilor este actualizată pentru a include toate definițiile limbilor livrate în Weblate.

Această caracteristică poate fi dezactivată folosind UPDATE_LANGUAGES. De asemenea, puteți impune actualizarea bazei de date pentru a se potrivi cu datele încorporate în Weblate folosind setuplang.

Coduri lingvistice ambigue și macrolimbajuri

În multe cazuri, nu este o idee bună să folosiți un cod de limbă macro pentru o traducere. Cazul tipic problematic ar putea fi limba kurdă, care poate fi scrisă în alfabet arab sau latin, în funcție de varianta actuală. Pentru a obține un comportament corect în Weblate, se recomandă să utilizați numai coduri lingvistice individuale și să evitați macrolimbajele.

Definiții lingvistice

Fiecare limbă este formată din următoarele câmpuri:

Codul limbii

Codul de identificare a limbii. Weblate preferă codurile din două litere, așa cum sunt definite de ISO 639-1, dar folosește codurile ISO 639-2 sau ISO 639-3 pentru limbile care nu au coduri din două litere. De asemenea, poate suporta coduri extinse, așa cum sunt definite de BCP 47.

Numele limbii

Numele vizibil al limbii. Numele limbilor incluse în Weblate sunt, de asemenea, localizate în funcție de limba interfeței cu utilizatorul.

Direcția textului

Determină dacă limba este scrisă de la dreapta la stânga sau de la stânga la dreapta. Această proprietate este autodetectată corect pentru majoritatea limbilor.

Numărul plural

Numărul de pluraluri folosite în limbă.

Formula plurală

Formulă de plural compatibilă cu Gettext utilizată pentru a determina ce formă de plural este utilizată pentru un număr dat.

Adăugarea de noi traduceri

Schimbat în versiunea 2.18: În versiunile anterioare versiunii 2.18, comportamentul de adăugare a noilor traduceri era specific formatului de fișier.

Weblate poate începe automat o nouă traducere pentru toate formatele de fișiere.

Unele formate se așteaptă să înceapă cu un fișier gol și să fie incluse doar șirurile traduse (de exemplu Resurse de șiruri Android), în timp ce altele se așteaptă ca toate cheile să fie prezente (de exemplu GNU gettext). În unele situații, acest lucru nu depinde de format, ci mai degrabă de cadrul pe care îl utilizați pentru a gestiona traducerea (de exemplu, cu Fișiere JSON).

Atunci când specificați Șablon pentru traduceri noi în Configurația componentei, Weblate va utiliza acest fișier pentru a începe noile traduceri. Toate traducerile care au ieșit vor fi eliminate din fișier atunci când se face acest lucru.

Atunci când Șablon pentru traduceri noi este gol și formatul de fișier acceptă acest lucru, se creează un fișier gol în care vor fi adăugate noi șiruri de caractere după ce acestea sunt traduse.

Opțiunea Stil de cod lingvistic vă permite să personalizați codul de limbă utilizat în numele fișierelor generate:

Implicit, în funcție de formatul fișierului

Depinde de formatul de fișier, pentru majoritatea dintre ele se utilizează POSIX.

Stil POSIX care utilizează sublinierea ca separator

Folosit în mod obișnuit de gettext și alte instrumente conexe, produce coduri de limbă precum pt_BR.

Stil POSIX care utilizează sublinierea ca separator, inclusiv codul de țară

Codul limbii în stil POSIX, inclusiv codul țării, chiar dacă nu este necesar (de exemplu cs_CZ).

Stilul BCP care utilizează cratima ca separator

Folosit de obicei pe platformele web, produce coduri de limbaj precum pt-BR.

Stil BCP care utilizează cratima ca separator, inclusiv codul de țară

Codul limbii în stilul BCP, inclusiv codul țării, chiar dacă nu este necesar (de exemplu cs-CZ).

Stil Android

Folosit numai în aplicațiile Android, produce coduri de limbă precum pt-rBR.

stil Java

Folosit de Java - în cea mai mare parte BCP cu coduri vechi pentru chineză.

În plus, orice corespondențe definite în Aliasuri lingvistice se aplică în sens invers.

Notă

Weblate recunoaște oricare dintre acestea atunci când analizează fișierele de traducere, setările de mai sus influențează doar modul în care sunt create noile fișiere.

Traducere continuă

Există o infrastructură care permite ca traducerea dumneavoastră să urmeze îndeaproape dezvoltarea. În acest fel, traducătorii pot lucra la traduceri pe tot parcursul timpului, în loc să lucreze la o cantitate uriașă de text nou chiar înainte de lansare.

Vezi și

Integrarea cu Weblate descrie modalitățile de bază pentru a vă integra dezvoltarea cu Weblate.

Acesta este procesul:

  1. Dezvoltatorii fac modificări și le transferă în depozitul VCS.

  2. Opțional, fișierele de traducere sunt actualizate (acest lucru depinde de formatul fișierului, a se vedea De ce Weblate încă arată șiruri de traducere vechi atunci când am actualizat șablonul?).

  3. Weblate extrage modificările din depozitul VCS, vezi Actualizarea depozitelor.

  4. Odată ce Weblate detectează modificări în traduceri, traducătorii sunt notificați în funcție de setările de abonament.

  5. Traducătorii trimit traducerile folosind interfața web Weblate sau încarcă modificările offline.

  6. Odată ce traducătorii au terminat, Weblate comite modificările în depozitul local (a se vedea Angajări leneșe) și le împinge înapoi dacă are permisiuni pentru a face acest lucru (a se vedea Împingerea modificărilor din Weblate).

digraph translations { graph [fontname = "sans-serif", fontsize=10]; node [fontname = "sans-serif", fontsize=10, margin=0.1, height=0]; edge [fontname = "sans-serif", fontsize=10]; "Developers" [shape=box, fillcolor="#144d3f", fontcolor=white, style=filled]; "Translators" [shape=box, fillcolor="#144d3f", fontcolor=white, style=filled]; "Developers" -> "VCS repository" [label=" 1. Push "]; "VCS repository" -> "VCS repository" [label=" 2. Updating translations ", style=dotted]; "VCS repository" -> "Weblate" [label=" 3. Pull "]; "Weblate" -> "Translators" [label=" 4. Notification "]; "Translators" -> "Weblate" [label=" 5. Translate "]; "Weblate" -> "VCS repository" [label=" 6. Push "]; }

Actualizarea depozitelor

Ar trebui să configurați o modalitate de actualizare a depozitelor backend de la sursa acestora.

Ori de câte ori Weblate actualizează depozitul, vor fi declanșate addon-urile post-update, vezi Extensii.

Evitarea conflictelor de fuziune

Conflictele de fuziune din Weblate apar atunci când același fișier a fost modificat atât în Weblate, cât și în afara acestuia. Există două abordări pentru a rezolva această problemă - evitați modificările în afara Weblate sau integrați Weblate în procesul de actualizare, astfel încât să se elimine modificările înainte de actualizarea fișierelor din afara Weblate.

Prima abordare este ușoară în cazul fișierelor monolingve - puteți adăuga noi șiruri de caractere în Weblate și puteți lăsa acolo întreaga editare a fișierelor. În cazul fișierelor bilingve, există de obicei un fel de proces de extragere a mesajelor pentru a genera fișiere traductibile din codul sursă. În unele cazuri, acesta poate fi împărțit în două părți - una pentru extracție generează șablonul (de exemplu, gettext POT este generat folosind xgettext) și apoi un proces ulterior îl îmbină în traduceri reale (fișierele gettext PO sunt actualizate folosind msgmerge). Puteți efectua al doilea pas în cadrul Weblate și acesta se va asigura că toate modificările în așteptare sunt incluse înainte de această operațiune.

A doua abordare poate fi realizată prin utilizarea Weblate’s REST API pentru a forța Weblate să împingă toate modificările în așteptare și să blocheze traducerea în timp ce efectuați modificări pe partea dumneavoastră.

Scriptul pentru efectuarea actualizărilor poate arăta astfel:

# Lock Weblate translation
wlc lock
# Push changes from Weblate to upstream repository
wlc push
# Pull changes from upstream repository to your local copy
git pull
# Update translation files, this example is for Django
./manage.py makemessages --keep-pot -a
git commit -m 'Locale updates' -- locale
# Push changes to upstream repository
git push
# Tell Weblate to pull changes (not needed if Weblate follows your repo
# automatically)
wlc pull
# Unlock translations
wlc unlock

Dacă aveți mai multe componente care împart același depozit, trebuie să le blocați pe toate separat:

wlc lock foo/bar
wlc lock foo/baz
wlc lock foo/baj

Notă

Exemplul utilizează Client Weblate, care are nevoie de configurare (chei API) pentru a putea controla Weblate de la distanță. De asemenea, puteți realiza acest lucru folosind orice client HTTP în loc de wlc, de exemplu curl, vezi Weblate’s REST API.

Vezi și

Client Weblate

Primirea automată a modificărilor de pe GitHub

Weblate vine cu suport nativ pentru GitHub.

Dacă utilizați Weblate găzduit, abordarea recomandată este să instalați Weblate app, astfel veți obține configurația corectă fără a fi nevoie să configurați prea multe. De asemenea, poate fi folosită pentru a împinge modificările înapoi.

Pentru a primi notificări la fiecare push către un depozit GitHub, adăugați Webhook-ul Weblate în setările depozitului (Webhooks), așa cum se arată în imaginea de mai jos:

_images/github-settings.png

Pentru URL-ul de sarcină utilă, adăugați /hooks/github/ la URL-ul Weblate, de exemplu, pentru serviciul Weblate găzduit, acesta este https://hosted.weblate.org/hooks/github/.

Puteți lăsa celelalte valori la setările implicite (Weblate poate gestiona ambele tipuri de conținut și consumă doar evenimentul push).

Primirea automată a modificărilor de la Bitbucket

Weblate are suport pentru Bitbucket webhooks, adăugați un webhook care se declanșează la împingerea depozitului, cu destinația către /hooks/bitbucket/ URL-ul de pe instalarea Weblate (de exemplu https://hosted.weblate.org/hooks/bitbucket/).

_images/bitbucket-settings.png

Primirea automată a modificărilor de la GitLab

Weblate are suport pentru cârligele GitLab, adăugați un webhook de proiect cu destinația /hooks/gitlab/` URL pe instalarea Weblate (de exemplu https://hosted.weblate.org/hooks/gitlab/).

Primirea automată a modificărilor de la Pagure

Nou în versiunea 3.3.

Weblate are suport pentru cârligele Pagure, adăugați un webhook cu destinația /hooks/pagure/` URL pe instalarea Weblate (de exemplu https://hosted.weblate.org/hooks/pagure/). Acest lucru poate fi făcut în Activate Web-hooks sub Project options:

_images/pagure-webhook.png

Primirea automată a modificărilor din Azure Repos

Nou în versiunea 3.8.

Weblate are suport pentru cârligele web Azure Repos, adăugați un webhook pentru evenimentul Code pushed cu destinația la /hooks/azure/` URL pe instalarea Weblate (de exemplu https://hosted.weblate.org/hooks/azure/). Acest lucru se poate face în Service hooks din Project settings.

Primirea automată a modificărilor din Gitea Repos

Nou în versiunea 3.9.

Weblate are suport pentru Gitea webhooks, adăugați un eveniment Gitea Webhook pentru evenimentul Push events cu destinația la /hooks/gitea/` URL-ul din instalarea Weblate (de exemplu https://hosted.weblate.org/hooks/gitea/). Acest lucru se poate face în Webhooks din depozitul Settings.

Primirea automată a modificărilor din Gitee Repos

Nou în versiunea 3.9.

Weblate are suport pentru Gitee webhooks, adăugați un WebHook pentru evenimentul Push cu destinația la /hooks/gitee/` URL-ul de pe instalarea Weblate (de exemplu https://hosted.weblate.org/hooks/gitee/). Acest lucru se poate face în WebHooks din cadrul depozitului Management.

Actualizarea automată a depozitelor în fiecare noapte

Weblate preia în mod automat depozitele la distanță în fiecare noapte pentru a îmbunătăți performanța la fuzionarea ulterioară a modificărilor. Opțional, puteți transforma acest lucru și în fuziuni nocturne, activând AUTO_UPDATE.

Împingerea modificărilor din Weblate

Fiecare componentă de traducere poate avea o adresă URL de împingere configurată (vezi URL de împingere a depozitului) și, în acest caz, Weblate va fi capabil să împingă modificările în depozitul de la distanță. Weblate poate fi, de asemenea, configurat să împingă automat modificările la fiecare confirmare (acest lucru este implicit, a se vedea Împingeți pe comitere). Dacă nu doriți ca modificările să fie împinse automat, puteți face acest lucru manual sub Repository maintenance sau folosind API prin wlc push.

Opțiunile push diferă în funcție de Integrarea controlului versiunilor utilizat, mai multe detalii se găsesc în acest capitol.

În cazul în care nu doriți împingeri directe de către Weblate, există suport pentru GitHub, GitLab, Pagure pull requests sau :ref: vcs-gerrit reviews, le puteți activa alegând GitHub, GitLab, Gerrit sau Pagure ca Sistem de control al versiunilor în Configurația componentei.

În general, următoarele opțiuni sunt disponibile cu Git, GitHub și GitLab:

Configurația dorită

Sistem de control al versiunilor

URL de împingere a depozitului

Împingeți ramura

Nu împinge

Git

vid

vid

Împingeți direct

Git

SSH URL

vid

Împingeți în ramura separată

Git

SSH URL

Denumirea branșei

GitHub trage cerere de la bifurcație

GitHub

vid

vid

GitHub trage cerere de la branșă

GitHub

URL SSH 1

Denumirea branșei

Cerere de fuziune GitLab din bifurcație

GitLab

vid

vid

Cerere de fuziune GitLab din branșă

GitLab

URL SSH 1

Denumirea branșei

Cerere de fuziune Pagure din bifurcație

Pagure

vid

vid

Pagure cerere de îmbinare din ramura

Pagure

URL SSH 1

Denumirea branșei

1(1,2,3)

Poate fi gol în cazul în care Depozitul de cod sursă suportă împingerea.

Notă

Puteți, de asemenea, să activați împingerea automată a modificărilor după ce Weblate le validează, acest lucru poate fi făcut în Împingeți pe comitere.

Vezi și

Consultați Accesarea depozitelor pentru configurarea cheilor SSH și Angajări leneșe pentru informații despre momentul în care Weblate decide să valideze modificările.

Branșe protejate

Dacă folosiți Weblate pe ramura protejată, îl puteți configura pentru a utiliza cereri de tragere și pentru a efectua o revizuire reală a traducerilor (ceea ce ar putea fi problematic pentru limbile pe care nu le cunoașteți). O abordare alternativă este de a renunța la această limitare pentru utilizatorul Weblate push.

De exemplu, pe GitHub, acest lucru se poate face în configurația depozitului:

_images/github-protected.png

Fuziune sau re-bază

În mod implicit, Weblate fuzionează depozitul din amonte în propriul depozit. Acesta este cel mai sigur mod în cazul în care accesați și depozitul de bază prin alte mijloace. În cazul în care nu aveți nevoie de acest lucru, puteți activa rebasarea modificărilor în upstream, ceea ce va produce un istoric cu mai puține comenzi de fuziune.

Notă

Operațiunea Rebasing vă poate cauza probleme în cazul fuziunilor complicate, așa că analizați cu atenție dacă doriți sau nu să o activați.

Interacțiunea cu ceilalți

Weblate facilitează interacțiunea cu ceilalți folosind API-ul său.

Angajări leneșe

Comportamentul Weblate este de a grupa, dacă este posibil, comenzi de la același autor într-o singură comandă. Acest lucru reduce foarte mult numărul de comenzi, însă este posibil să fie necesar să-i spuneți în mod explicit să facă comenzi în cazul în care doriți să sincronizați depozitul VCS, de exemplu pentru fuziune (acest lucru este permis în mod implicit pentru grupul Managers, a se vedea Listă de privilegii).

Modificările din acest mod sunt confirmate atunci când este îndeplinită oricare dintre următoarele condiții:

Sugestie

Se creează angajamente pentru fiecare componentă. Astfel, în cazul în care aveți multe componente, veți vedea în continuare o mulțime de comisioane. În acest caz, ați putea utiliza addon-ul Comenzi Git Squash.

Dacă doriți să confirmați modificările mai frecvent și fără a verifica vechimea, puteți programa o sarcină regulată pentru a efectua o confirmare:

CELERY_BEAT_SCHEDULE = {
    # Unconditionally commit all changes every 2 minutes
    "commit": {
        "task": "weblate.trans.tasks.commit_pending",
        # Ommiting hours will honor per component settings,
        # otherwise components with no changes older than this
        # won't be committed
        "kwargs": {"hours": 0},
        # How frequently to execute the job in seconds
        "schedule": 120,
    }
}

Procesarea depozitului cu scripturi

Modalitatea de a personaliza modul în care Weblate interacționează cu depozitul este Extensii. Consultați Executarea scripturilor din add-on pentru informații despre cum să executați scripturi externe prin intermediul addon-urilor.

Păstrarea traducerilor la fel în toate componentele

Odată ce aveți mai multe componente de traducere, ați putea dori să vă asigurați că aceleași șiruri de caractere au aceeași traducere. Acest lucru poate fi realizat la mai multe niveluri.

Propagarea traducerii

Cu Permiteți propagarea traducerii activat (ceea ce este implicit, vezi Configurația componentei), toate traducerile noi sunt efectuate automat în toate componentele cu șiruri de caractere corespunzătoare. Astfel de traduceri sunt creditate în mod corespunzător utilizatorului care traduce în mod curent în toate componentele.

Notă

Propagarea traducerii necesită ca cheia să se potrivească pentru formatele de traducere monolingve, așa că țineți cont de acest lucru atunci când creați chei de traducere.

Verificarea consistenței

Verificarea Inconsecvent se declanșează ori de câte ori șirurile sunt diferite. Puteți utiliza acest lucru pentru a examina manual astfel de diferențe și pentru a alege traducerea corectă.

Traducere automată

Traducerea automată bazată pe diferite componente poate fi o modalitate de a sincroniza traducerile între componente. Puteți fie să o declanșați manual (a se vedea Traducere automată), fie să o faceți să se execute automat la actualizarea depozitului folosind addon (a se vedea Traducere automată).

Licențierea traducerilor

Puteți specifica licența sub care se contribuie la traduceri. Acest lucru este deosebit de important de făcut dacă traducerile sunt deschise publicului, pentru a stipula la ce pot fi folosite.

Trebuie să specificați Configurația componentei informații despre licență. Ar trebui să evitați să solicitați un acord de licență pentru colaboratori, deși este posibil.

Informații despre licență

La specificarea informațiilor despre licență (numele licenței și adresa URL), aceste informații sunt afișate în secțiunea de informații despre traducere a componentei respective Configurația componentei.

De obicei, acesta este cel mai bun loc pentru a posta informații despre licențe dacă nu este necesar un consimțământ explicit. Dacă proiectul sau traducerea ta nu este liberă, cel mai probabil ai nevoie de un consimțământ prealabil.

Acord de colaborare

Dacă specificați un acord de licență pentru colaboratori, numai utilizatorii care au fost de acord cu acesta vor putea contribui. Acesta este un pas clar vizibil la accesarea traducerii:

_images/contributor-agreement.png

Textul introdus este formatat în paragrafe și pot fi incluse linkuri externe. Nu se poate utiliza marcajul HTML.

Licențe de utilizator

Orice utilizator poate revizui toate licențele de traducere ale tuturor proiectelor publice de pe instanță din profilul său:

_images/profile-licenses.png

Procesul de traducere

Votul prin sugestie

Toată lumea poate adăuga sugestii în mod implicit, pentru a fi acceptate de utilizatorii conectați. Votarea sugestiilor poate fi folosită pentru a utiliza un șir de caractere atunci când mai mulți utilizatori conectați sunt de acord, prin configurarea Configurația componentei cu Suggestion voting pentru a activa votul și Autoaccept suggestions pentru a stabili un prag pentru sugestiile acceptate (acesta include un vot din partea utilizatorului care face sugestia, dacă este acceptat).

Notă

Odată configurată acceptarea automată, utilizatorii normali își pierd privilegiul de a salva direct traducerile sau de a accepta sugestii. Acest lucru poate fi anulat cu Edit string when suggestions are enforced permission.

Puteți să le combinați cu access control în una dintre următoarele configurații:

  • Utilizatorii sugerează și votează pentru sugestii, iar un grup limitat controlează ceea ce este acceptat. - Activați votul. - Dezactivați acceptarea automată. - Nu permiteți utilizatorilor să salveze traducerile.

  • Utilizatorii sugerează și votează sugestii, care sunt acceptate automat odată ce un număr definit de utilizatori sunt de acord. - Activați votul. - Setați numărul dorit de voturi pentru acceptarea automată.

  • Votul opțional pentru sugestii. (Poate fi utilizat opțional de către utilizatori atunci când nu sunt siguri de o traducere, prin formularea mai multor sugestii). - Activați doar votul.

Informații suplimentare despre șirurile sursă

Îmbunătățiți procesul de traducere prin adăugarea de informații suplimentare la șiruri, inclusiv explicații, priorități ale șirurilor, indicatori de verificare și context vizual. Unele dintre aceste informații pot fi extrase din fișierele de traducere, iar altele pot fi adăugate prin editarea informațiilor suplimentare despre șiruri:

_images/source-review-edit.png

Accesați acest lucru direct din interfața de traducere, făcând clic pe pictograma „Editare” de lângă Context captură de ecran sau Flags.

_images/source-information.png

Prioritatea șirurilor

Nou în versiunea 2.0.

Prioritatea șirurilor poate fi modificată pentru a oferi mai devreme șiruri cu prioritate mai mare pentru traducere, utilizând indicatorul priority.

Sugestie

Aceasta poate fi utilizată pentru a ordona fluxul de traducere într-un mod logic.

Steaguri de traducere

Nou în versiunea 2.4.

Schimbat în versiunea 3.3: Numit anterior Quality checks flags, nu mai configurează numai verificări.

Setul implicit de indicatori de traducere este determinat de traducerea Configurația componentei și de fișierul de traducere. Cu toate acestea, este posibil să doriți să îl utilizați pentru a personaliza acest lucru pentru fiecare șir sursă.

Explicație

Schimbat în versiunea 4.1: În versiunile anterioare, aceasta se numea Extra context.

Folosiți explicația pentru a clarifica domeniul de aplicare sau utilizarea traducerii. Puteți utiliza Markdown pentru a include linkuri și alte marcaje.

Context vizual pentru șiruri de caractere

Nou în versiunea 2.9.

Puteți încărca o captură de ecran care să arate un anumit șir de caractere sursă utilizat în cadrul programului dumneavoastră. Acest lucru îi ajută pe traducători să înțeleagă unde este folosit și cum ar trebui tradus.

Captura de ecran încărcată este afișată în bara laterală a contextului de traducere:

_images/screenshot-context.png

În plus față de Informații suplimentare despre șirurile sursă, capturile de ecran au o interfață de gestionare separată în meniul Tools. Încărcați capturi de ecran, atribuiți-le manual șirurilor sursă sau utilizați recunoașterea optică a caracterelor pentru a face acest lucru.

Odată ce o captură de ecran este încărcată, această interfață se ocupă de gestionare și de asocierea șirului sursă:

_images/screenshot-ocr.png

Verificări și reparații

Reparații automate personalizate

Puteți, de asemenea, să vă implementați propriile corecturi automate în plus față de cele standard și să le includeți în AUTOFIX_LIST.

Corecțiile automate sunt puternice, dar pot provoca, de asemenea, daune; aveți grijă când scrieți una.

De exemplu, următoarea corecție automată ar înlocui fiecare apariție a șirului foo într-o traducere cu bar:

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#

from django.utils.translation import gettext_lazy as _

from weblate.trans.autofixes.base import AutoFix


class ReplaceFooWithBar(AutoFix):
    """Replace foo with bar."""

    name = _("Foobar")

    def fix_single_target(self, target, source, unit):
        if "foo" in target:
            return target.replace("foo", "bar"), True
        return target, False

Pentru a instala verificări personalizate, furnizați o cale complet calificată către clasa Python în AUTOFIX_LIST, a se vedea Verificări de calitate personalizate, addon-uri și auto-corectări.

Personalizarea comportamentului cu ajutorul stegulețelor

Puteți ajusta cu precizie comportamentul Weblate (în principal verificările) pentru fiecare șir sursă (în revizuirea șirurilor sursă, a se vedea Informații suplimentare despre șirurile sursă) sau în Configurația componentei (Steaguri de traducere). Unele formate de fișiere permit, de asemenea, specificarea stegulețelor direct în format (a se vedea Formate de fișiere acceptate).

Stegulețele sunt separate prin virgulă, iar parametrii sunt separați prin două puncte. Puteți utiliza ghilimele pentru a include spații albe sau caractere speciale în șir. De exemplu:

placeholders:"special:value":"other value", regex:.*

Iată o listă a marcajelor acceptate în prezent:

rst-text

Tratează un text ca un document reStructuredText, afectează Traducere neschimbată.

dos-eol

Folosește markeri de sfârșit de linie DOS în loc de cei Unix (\r\n instead of \n).

read-only

Șirul este doar pentru citire și nu trebuie editat în Weblate, a se vedea Read-only strings.

priority:N

Prioritatea șirului. Șirurile cu prioritate mai mare sunt prezentate mai întâi pentru traducere. Prioritatea implicită este 100. Cu cât un șir are o prioritate mai mare, cu atât este oferit mai devreme pentru traducere.

max-length:N

Limitează lungimea maximă a unui șir de caractere la N caractere, a se vedea Lungimea maximă a traducerii.

xml-text

Tratează textul ca document XML, afectează Sintaxa XML și Marcarea XML.

font-family:NAME

Definește font-family pentru verificările de redare, a se vedea Gestionarea fonturilor.

font-weight:WEIGHT

Definiți font-weight pentru verificările de redare, a se vedea Gestionarea fonturilor.

font-size:SIZE

Definiți dimensiunea fontului pentru verificările de redare, a se vedea Gestionarea fonturilor.

font-spacing:SPACING`

Definiți spațierea literelor pentru verificările de redare, a se vedea Gestionarea fonturilor.

icu-flags:FLAGS

Define flags for customizing the behavior of the ICU MessageFormat quality check.

icu-tag-prefix:PREFIX

Set a required prefix for XML tags for the ICU MessageFormat quality check.

placeholders:NAME:NAME2:...

Șiruri de caractere de poziție așteptate în traducere, a se vedea Semne de poziție.

replacements:FROM:TO:FROM2:TO2...

Înlocuirile care trebuie efectuate la verificarea parametrilor textului rezultat (de exemplu, în Dimensiunea maximă a traducerii sau Lungimea maximă a traducerii). Cazul tipic de utilizare pentru acest lucru este de a extinde placeables pentru a se asigura că textul se potrivește chiar și cu valori lungi, de exemplu: replacements:%s: "John Doe".

variants:SOURCE

Marchează acest șir ca fiind o variantă de șir cu sursă corespunzătoare. A se vedea Variante de șiruri.

regex:REGEX

Expresie regulată pentru a potrivi traducerea, a se vedea Expresie regulată.

forbidden

Indică o traducere interzisă într-un glosar, a se vedea Traduceri interzise.

strict-same

Faceți ca „Traducerea neschimbată” să evite utilizarea listei negre a cuvintelor încorporate, a se vedea Traducere neschimbată.

check-glossary

Activați verificarea calității Nu respectă glosarul.

angularjs-format

Activați verificarea calității Șir de interpolare AngularJS.

c-format

Activați verificarea calității Format C.

c-sharp-format

Activați verificarea calității C# format.

es-format

Activați verificarea calității Șabloane literale ECMAScript.

i18next-interpolation

Activați verificarea calității Interpolare i18next.

icu-message-format

Enable the ICU MessageFormat quality check.

java-format

Activați verificarea calității format Java.

java-messageformat

Activați verificarea calității Mesaj în format Java.

javascript-format

Activați verificarea calității Format JavaScript.

lua-format

Activați verificarea calității Formatul Lua.

object-pascal-format

Activați verificarea calității check-object-pascal-pascal-format.

percent-placeholders

Activați verificarea calității Procentaje de marcaj.

perl-format

Activați verificarea calității Formatul Perl.

php-format

Activați verificarea calității Formatul Perl.

python-brace-format

Activați verificarea calității Formatul de bretea Python.

python-format

Activați verificarea calității Format Python.

qt-format

Activați verificarea calității Formatul Qt.

qt-plural-format

Activați verificarea calității Formatul Qt.

ruby-format

Activați verificarea calității Formatul Ruby.

scheme-format

Activați verificarea calității Formatul schemei.

vue-format

Activați verificarea calității Formatare Vue I18n.

md-text

Tratează textul ca pe un document Markdown. Activați verificările de calitate Legături Markdown, Referințe Markdown și Sintaxa Markdown.

safe-html

Activați verificarea calității HTML nesigur.

url

Șirul trebuie să fie format doar dintr-un URL. Activați verificarea calității URL.

ignore-bbcode

Săriți peste verificarea calității Marcaj BBcode.

ignore-duplicate

Săriți peste verificarea calității Cuvinte consecutive duplicate.

ignore-check-glossary

Săriți peste verificarea calității check-check-check-glossary.

ignore-double-space

Săriți peste verificarea calității Spațiu dublu.

ignore-angularjs-format

Treceți peste verificarea calității Șir de interpolare AngularJS.

ignore-c-format

Săriți peste verificarea calității Format C.

ignore-c-sharp-format

Săriți peste verificarea calității C# format.

ignore-es-format

Săriți peste verificarea calității Șabloane literale ECMAScript.

ignore-i18next-interpolation

Treceți peste verificarea calității Interpolare i18next.

ignore-icu-message-format

Skip the ICU MessageFormat quality check.

ignore-java-format

Săriți peste verificarea calității format Java.

ignore-java-messageformat

Treceți peste verificarea calității Mesaj în format Java.

ignore-javascript-format

Treceți peste verificarea calității Format JavaScript.

ignore-lua-format

Săriți peste verificarea calității Formatul Lua.

ignore-object-pascal-format

Săriți peste verificarea calității Formatul Object Pascal.

ignore-percent-placeholders

Săriți peste verificarea calității Procentaje de marcaj.

ignore-perl-format

Săriți peste verificarea calității Formatul Perl.

ignore-php-format

Săriți peste verificarea calității Formatul PHP.

ignore-python-brace-format

Săriți peste verificarea calității Formatul de bretea Python.

ignore-python-format

Săriți peste verificarea calității Format Python.

ignore-qt-format

Săriți peste verificarea calității Formatul Qt.

ignore-qt-plural-format

Săriți peste verificarea calității Formatul plural Qt.

ignore-ruby-format

Săriți peste verificarea calității Formatul Ruby.

ignore-scheme-format

Săriți peste verificarea calității Formatul schemei.

ignore-vue-format

Săriți peste verificarea calității Formatare Vue I18n.

ignore-translated

Săriți peste verificarea calității A fost tradus.

ignore-inconsistent

Săriți peste verificarea calității Inconsecvent.

ignore-kashida

Săriți peste verificarea calității Scrisoarea Kashida folosită.

ignore-md-link

Săriți peste verificarea calității Legături Markdown.

ignore-md-reflink

Săriți peste verificarea calității Referințe Markdown.

ignore-md-syntax

Săriți peste verificarea calității Sintaxa Markdown.

ignore-max-length

Săriți peste verificarea calității Lungimea maximă a traducerii.

ignore-max-size

Săriți peste verificarea calității Dimensiunea maximă a traducerii.

ignore-escaped-newline

Treceți peste verificarea calității Nepotrivit \n.

ignore-end-colon

Săriți peste verificarea calității Două puncte nepotrivite.

ignore-end-ellipsis

Săriți peste verificarea calității Elipsa nepotrivită.

ignore-end-exclamation

Săriți peste verificarea calității Semnul exclamării nepotrivit.

ignore-end-stop

Săriți peste verificarea calității Punct final nepotrivit.

ignore-end-question

Săriți peste verificarea calității Semn de întrebare nepotrivit.

ignore-end-semicolon

Săriți peste verificarea calității Punct și virgulă nepotrivit.

ignore-newline-count

Săriți peste verificarea calității Întreruperi de linie nepotrivite.

ignore-plurals

Săriți peste verificarea calității Lipsește pluralul.

ignore-placeholders

Săriți peste verificarea calității Semne de poziție.

ignore-punctuation-spacing

Săriți peste verificarea calității Spațierea punctuației.

ignore-regex

Săriți peste verificarea calității Expresie regulată.

ignore-same-plurals

Săriți peste verificarea calității Același plural.

ignore-begin-newline

Săriți peste verificarea calității Începutul liniei noi.

ignore-begin-space

Săriți peste verificarea calității Spații de pornire.

ignore-end-newline

Săriți peste verificarea calității Linie nouă de urmărire.

ignore-end-space

Săriți peste verificarea calității Spațiu de urmărire.

ignore-same

Săriți peste verificarea calității Traducere neschimbată.

ignore-safe-html

Săriți peste verificarea calității HTML nesigur.

ignore-url

Săriți peste verificarea calității URL.

ignore-xml-tags

Săriți peste verificarea calității Marcarea XML.

ignore-xml-invalid

Săriți peste verificarea calității Sintaxa XML.

ignore-zero-width-space

Săriți peste verificarea calității Spațiu cu lățime zero.

ignore-ellipsis

Săriți peste verificarea calității Elipsă.

ignore-icu-message-format-syntax

Skip the ICU MessageFormat syntax quality check.

ignore-long-untranslated

Treceți peste verificarea calității Lungă netradusă.

ignore-multiple-failures

Săriți peste verificarea calității Controale multiple eșuate.

ignore-unnamed-format

Treceți peste verificarea calității Variabile multiple fără nume.

ignore-optional-plural

Săriți peste verificarea calității Nepluralizat.

Notă

În general, regula se numește ignore-* pentru orice verificare, folosind identificatorul acesteia, astfel încât puteți folosi acest lucru chiar și pentru verificările dumneavoastră personalizate.

Aceste indicatori sunt înțeleși atât în setările Configurația componentei, cât și în setările pentru șirul sursă și în fișierul de traducere în sine (de exemplu, în GNU gettext).

Executarea controalelor

Nou în versiunea 3.11.

Puteți configura o listă de verificări care nu pot fi ignorate prin setarea Controale forțate în Configurația componentei. Fiecare verificare din listă nu poate fi ignorată în interfața cu utilizatorul, iar orice șir care nu trece de această verificare este marcat ca Needs editing (a se vedea Statele de traducere).

Gestionarea fonturilor

Nou în versiunea 3.7.

Sugestie

Fonturile încărcate în Weblate sunt folosite doar în scopul verificării Dimensiunea maximă a traducerii, ele nu au niciun efect în interfața cu utilizatorul Weblate.

Verificarea Dimensiunea maximă a traducerii utilizată pentru a calcula dimensiunile textului redat are nevoie ca fontul să fie încărcat în Weblate și selectat cu ajutorul unui indicator de traducere (see Personalizarea comportamentului cu ajutorul stegulețelor).

Instrumentul de gestionare a fonturilor Weblate de la : Fonts din meniul Manage al proiectului de traducere oferă o interfață pentru încărcarea și gestionarea fonturilor. Se pot încărca fonturi TrueType sau OpenType, se pot configura grupuri de fonturi și se pot utiliza cele din verificare.

Grupurile de fonturi vă permit să definiți fonturi diferite pentru diferite limbi, ceea ce este de obicei necesar pentru limbile nelatine:

_images/font-group-edit.png

Grupurile de fonturi sunt identificate printr-un nume, care nu poate conține spații albe sau caractere speciale, astfel încât să poată fi utilizat cu ușurință în definiția verificării:

_images/font-group-list.png

Familia de caractere și stilul sunt recunoscute automat după încărcarea lor:

_images/font-edit.png

Puteți avea mai multe fonturi încărcate în Weblate:

_images/font-list.png

Pentru a utiliza fonturile pentru verificarea lungimii șirului de caractere, treceți-i indicatoarele corespunzătoare (a se vedea Personalizarea comportamentului cu ajutorul stegulețelor). Probabil că veți avea nevoie de următoarele:

max-size:500

Defines maximal width in pixels.

font-family:ubuntu

Definește grupul de fonturi care urmează să fie utilizat prin specificarea identificatorului acestuia.

font-size:22

Defines font size in pixels.

Întocmirea propriilor cecuri

Există o gamă largă de verificări ale calității încorporate (a se vedea Controale de calitate), deși s-ar putea să nu acopere tot ceea ce doriți să verificați. Lista de verificări efectuate poate fi ajustată folosind CHECK_LIST și puteți adăuga și verificări personalizate.

  1. Subclasa weblate.checks.Check

  2. Setați câteva atribute.

  3. Implementați fie check (dacă doriți să vă ocupați de plural în codul dumneavoastră), fie metoda check_single (care o face pentru dumneavoastră).

Câteva exemple:

Pentru a instala verificări personalizate, furnizați o cale complet calificată către clasa Python în CHECK_LIST, a se vedea Verificări de calitate personalizate, addon-uri și auto-corectări.

Verificarea faptului că textul traducerii nu conține „foo”

Aceasta este o verificare destul de simplă, care verifică doar dacă în traducere lipsește șirul „foo”.

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
"""Simple quality check example."""

from django.utils.translation import gettext_lazy as _

from weblate.checks.base import TargetCheck


class FooCheck(TargetCheck):

    # Used as identifier for check, should be unique
    # Has to be shorter than 50 characters
    check_id = "foo"

    # Short name used to display failing check
    name = _("Foo check")

    # Description for failing check
    description = _("Your translation is foo")

    # Real check code
    def check_single(self, source, target, unit):
        return "foo" in target

Verificarea faptului că pluralul din textul traducerii în limba cehă diferă

Verificați cu ajutorul informațiilor lingvistice pentru a verifica dacă cele două forme de plural în limba cehă nu sunt identice.

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
"""Quality check example for Czech plurals."""

from django.utils.translation import gettext_lazy as _

from weblate.checks.base import TargetCheck


class PluralCzechCheck(TargetCheck):

    # Used as identifier for check, should be unique
    # Has to be shorter than 50 characters
    check_id = "foo"

    # Short name used to display failing check
    name = _("Foo check")

    # Description for failing check
    description = _("Your translation is foo")

    # Real check code
    def check_target_unit(self, sources, targets, unit):
        if self.is_language(unit, ("cs",)):
            return targets[1] == targets[2]
        return False

    def check_single(self, source, target, unit):
        """We don't check target strings here."""
        return False

Traducere automată

Suport încorporat pentru mai multe servicii de traducere automată și poate fi activat de către administrator folosind MT_SERVICES pentru fiecare dintre ele. Acestea sunt supuse termenilor de utilizare a acestora, așa că asigurați-vă că vi se permite să le folosiți așa cum doriți.

Limba sursă poate fi configurată la proiect.

amaGama

Instalare specială a tmserver rulată de autorii lui Virtaal.

Activați acest serviciu adăugând weblate.machinery.tmserver.AmagamaTranslation la MT_SERVICES.

Apertium

O platformă de traducere automată cu software liber care oferă traduceri către un set limitat de limbi.

Modul recomandat de utilizare a Apertium este de a rula propriul server Apertium-APy.

Activați acest serviciu adăugând weblate.machinery.apertium.ApertiumAPYTranslation la MT_SERVICES și setați MT_APERTIUM_APY.

AWS

Nou în versiunea 3.1.

Amazon Translate este un serviciu de traducere automată neuronală pentru traducerea textului în și din limba engleză într-o gamă largă de limbi acceptate.

  1. Activați acest serviciu adăugând weblate.machinery.aws.AWSTranslation la MT_SERVICES.

  2. Instalați modulul boto3.

  3. Configurați Weblate.

Baidu API traducere automată

Nou în versiunea 3.2.

Serviciul de traducere automată furnizat de Baidu.

Acest serviciu utilizează un API și trebuie să obțineți un ID și o cheie API de la Baidu pentru a-l utiliza.

Activați acest serviciu adăugând weblate.machinery.baidu.BaiduTranslation la MT_SERVICES și setați MT_BAIDU_ID și MT_BAIDU_SECRET.

DeepL

Nou în versiunea 2.20.

DeepL este un serviciu plătit care oferă un serviciu de traducere automată de calitate pentru câteva limbi. Trebuie să achiziționați abonamentul DeepL API sau puteți utiliza planul DeepL Pro (clasic).

Activați acest serviciu adăugând weblate.machinery.deepl.DeepLTranslation la MT_SERVICES și setați MT_DEEPL_KEY.

Sugestie

În cazul în care aveți un abonament pentru instrumentele CAT, ar trebui să utilizați „v1 API” în loc de „v2” implicită utilizată de Weblate (în acest caz, nu este chiar o versiune API). În cazul în care aveți un plan gratuit în loc de unul plătit, trebuie să utilizați https://api-free.deepl.com/ în loc de https://api.deepl.com/` Puteți ajusta ambii parametri prin MT_DEEPL_API_URL.

Traducere Libre

Nou în versiunea 4.7.1.

LibreTranslate este un serviciu gratuit și cu sursă deschisă pentru traduceri automate. Instanța publică necesită o cheie API, dar LibreTranslate poate fi găzduit de sine stătător și există mai multe oglinzi disponibile pentru a utiliza API-ul gratuit.

Activați acest serviciu adăugând weblate.machinery.libretranslate.LibreTranslateTranslation la MT_SERVICES și setează:setting:MT_LIBRETRANSLATE_API_URL. Dacă instanța ta necesită o cheie API, trebuie să setezi, de asemenea, MT_LIBRETRANSLATE_KEY.

Glosbe

Dicționar gratuit și memorie de traducere pentru aproape toate limbile vii.

Utilizarea API este gratuită, dar este supusă licenței sursei de date utilizate. Există o limită de apeluri care pot fi efectuate de la un IP într-o anumită perioadă de timp, pentru a preveni abuzurile.

Activați acest serviciu adăugând weblate.machinery.glosbe.GlosbeTranslation la MT_SERVICES.

Vezi și

Glosbe website

Google Traducere

Serviciu de traducere automată furnizat de Google.

Acest serviciu utilizează Google Translation API și trebuie să obțineți o cheie API și să activați facturarea în consola Google API.

Pentru a activa acest serviciu, adăugați weblate.machinery.google.GoogleTranslation la MT_SERVICES și setați MT_GOOGLE_KEY.

Google Translate API V3 (Avansat)

Serviciu de traducere automată furnizat de serviciile Google Cloud.

Acest serviciu diferă de cel anterior prin modul în care se autentifică. Pentru a activa serviciul, adăugați weblate.machinery.googlev3.GoogleV3Translation la MT_SERVICES și setați

Dacă location nu reușește, este posibil să fie necesar să specificați și MT_GOOGLE_LOCATION.

Microsoft Servicii Cognitive Translator

Nou în versiunea 2.10.

Serviciul de traducere automată furnizat de Microsoft în portalul Azure ca unul dintre serviciile cognitive.

Weblate implementează Translator API V3.

Pentru a activa acest serviciu, adăugați weblate.machinery.microsoft.MicrosoftCognitiveTranslation la MT_SERVICES și setați MT_MICROSOFT_COGNITIVE_KEY.

Traducător Text API V2

Cheia pe care o utilizați cu Translator API V2 poate fi utilizată cu API 3.

Traducător text API V3

Trebuie să vă înregistrați pe portalul Azure și să folosiți cheia pe care o obțineți acolo. Cu noile chei Azure, trebuie, de asemenea, să setați MT_MICROSOFT_REGION la localitatea serviciului dumneavoastră.

Serviciul de terminologie Microsoft

Nou în versiunea 2.19.

Microsoft Terminology Service API vă permite să accesați în mod programatic terminologia, definițiile și șirurile de caractere ale interfeței cu utilizatorul (UI) disponibile în portalul lingvistic prin intermediul unui serviciu web.

Activați acest serviciu adăugând weblate.machinery.microsoftterminology.MicrosoftTerminologyService la MT_SERVICES.

ModernMT

Nou în versiunea 4.2.

Activați acest serviciu adăugând weblate.machinery.modernmt.ModernMTTranslation la MT_SERVICES și configurați MT_MODERNMT_KEY.

MemoriaMea

Memorie de traducere uriașă cu traducere automată.

Utilizarea gratuită și anonimă este în prezent limitată la 100 de solicitări/zi sau la 1000 de solicitări/zi atunci când furnizați o adresă de e-mail de contact în MT_MYMEMORY_EMAIL. Puteți, de asemenea, să le cereți mai mult.

Activați acest serviciu adăugând weblate.machinery.mymemory.MyMemoryTranslation la MT_SERVICES și setați MT_MYMEMORY_EMAIL.

NetEase Sight API traducere automată

Nou în versiunea 3.3.

Serviciu de traducere automată furnizat de NetEase.

Acest serviciu utilizează un API, iar tu trebuie să obții cheia și secretul de la NetEase.

Activați acest serviciu adăugând weblate.machinery.youdao.NeteaseSightTranslation la MT_SERVICES și setați MT_NETEASE_KEY și MT_NETEASE_SECRET.

tmserver

Puteți rula propriul server de memorie de traducere utilizând cel inclus în Translate-toolkit și lăsați Weblate să vorbească cu acesta. De asemenea, îl puteți utiliza cu un server amaGama, care este o versiune îmbunătățită a tmserver.

  1. În primul rând, veți dori să importați unele date în memoria de traducere:

2. Turn on this service by adding weblate.machinery.tmserver.TMServerTranslation to MT_SERVICES.

build_tmdb -d /var/lib/tm/db -s en -t cs locale/cs/LC_MESSAGES/django.po
build_tmdb -d /var/lib/tm/db -s en -t de locale/de/LC_MESSAGES/django.po
build_tmdb -d /var/lib/tm/db -s en -t fr locale/fr/LC_MESSAGES/django.po
  1. Porniți tmserver pentru a asculta cererile dumneavoastră:

tmserver -d /var/lib/tm/db
  1. Configurați Weblate pentru a vorbi cu acesta:

MT_TMSERVER = "http://localhost:8888/tmserver/"

Yandex Traducere

Serviciul de traducere automată furnizat de Yandex.

Acest serviciu utilizează un API de traducere și trebuie să obțineți o cheie API de la Yandex.

Activați acest serviciu adăugând weblate.machinery.yandex.YandexTranslation la MT_SERVICES, și setați MT_YANDEX_KEY.

Youdao Zhiyun API traducere automată

Nou în versiunea 3.2.

Serviciul de traducere automată furnizat de Youdao.

Acest serviciu utilizează un API, iar dumneavoastră trebuie să obțineți un ID și o cheie API de la Youdao.

Activați acest serviciu adăugând weblate.machinery.youdao.YoudaoTranslation la MT_SERVICES și setați MT_YOUDAO_ID și MT_YOUDAO_SECRET.

Weblate

Weblate poate fi, de asemenea, sursa traducerilor automate. Acesta se bazează pe motorul Woosh fulltext și oferă atât corespondențe exacte, cât și inexacte.

Activați aceste servicii adăugând weblate.machinery.weblatetm.WeblateTranslation la MT_SERVICES.

Memorie de traducere Weblate

Nou în versiunea 2.20.

Memorie de traducere poate fi utilizată și ca sursă pentru sugestii de traducere automată.

Activați aceste servicii adăugând weblate.memory.machine.WeblateMemory la MT_SERVICES. Acest serviciu este activat în mod implicit.

Centrul de traduceri SAP

Serviciu de traducere automată furnizat de SAP.

Trebuie să aveți un cont SAP (și SAP Translation Hub activat în SAP Cloud Platform) pentru a utiliza acest serviciu.

Activați acest serviciu adăugând weblate.machinery.saptranslationhub.SAPTranslationHub la MT_SERVICES și setați accesul corespunzător fie la sandbox, fie la API-ul de producție.

Notă

Pentru a accesa API-ul Sandbox, trebuie să setați MT_SAP_BASE_URL și MT_SAP_SANDBOX_APIKEY.

Pentru a accesa API-ul productiv, trebuie să setați MT_SAP_BASE_URL, MT_SAP_USERNAME și MT_SAP_PASSWORD.

Vezi și

MT_SAP_BASE_URL, MT_SAP_SANDBOX_APIKEY, MT_SAP_USERNAME, MT_SAP_PASSWORD, MT_SAP_USE_MT SAP Translation Hub API <https://api.sap.com/shell/discover/contentpackage/SAPTranslationHub/api/translationhub>`_

Traducere automată personalizată

De asemenea, vă puteți implementa propriile servicii de traducere automată folosind câteva linii de cod Python. Acest exemplu implementează traducerea automată într-o listă fixă de limbi utilizând modulul Python dictionary:

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
"""Machine translation example."""

import dictionary

from weblate.machinery.base import MachineTranslation


class SampleTranslation(MachineTranslation):
    """Sample machine translation interface."""

    name = "Sample"

    def download_languages(self):
        """Return list of languages your machine translation supports."""
        return {"cs"}

    def download_translations(
        self,
        source,
        language,
        text: str,
        unit,
        user,
        search: bool,
        threshold: int = 75,
    ):
        """Return tuple with translations."""
        for t in dictionary.translate(text):
            yield {"text": t, "quality": 100, "service": self.name, "source": text}

Puteți să vă listați propria clasă în MT_SERVICES și Weblate va începe să o folosească.

Extensii

Nou în versiunea 2.19.

Suplimentele oferă modalități de personalizare și automatizare a fluxului de lucru al traducerilor. Administratorii pot adăuga și gestiona suplimentele din meniul ManageAdd-ons al fiecărei componente de traducere respective.

Sugestie

De asemenea, puteți configura suplimentele folosind API, DEFAULT_ADDONS, sau install_addon.

_images/addons.png

Addon-uri încorporate

Traducere automată

Nou în versiunea 3.9.

ID add-on

weblate.autotranslate.autotranslate

Configurație

mode

Modul de traducere automată

Alegerile disponibile:

suggest – Add as suggestion

translate – Add as translation

fuzzy – Add as needing edit

filter_type

Search filter

Alegerile disponibile:

all – All strings

nottranslated – Not translated strings

todo – Strings needing action

fuzzy – Strings marked for edit

check:inconsistent – Failed check: Inconsistent

auto_source

Automatic translation source

Alegerile disponibile:

others – Other translation components

mt – Machine translation

component

Componente

Enter component to use as source, keep blank to use all components in current project.

engines

Motoare de traducere automată

threshold

Prag de punctaj

Declanșări

actualizare componentă, zilnic

Traduce automat șirurile de caractere cu ajutorul traducerii automate sau al altor componente.

Acesta este declanșat:

  • Atunci când apar șiruri noi într-o componentă.

  • O dată pe lună pentru fiecare componentă, acest lucru poate fi configurat folosind BACKGROUND_TASKS.

CDN de localizare JavaScript

Nou în versiunea 4.2.

ID add-on

weblate.cdn.cdnjs

Configurație

threshold

Pragul de traducere

Pragul de includere a traducerilor.

css_selector

Selector CSS

Selector CSS pentru detectarea elementelor localizabile.

cookie_name

Numele cookie-ului de limbă

Numele modulului cookie care stochează preferințele lingvistice.

files

Extrageți șiruri de caractere din fișiere HTML

Listă de nume de fișiere din depozitul curent sau de adrese URL de la distanță care trebuie analizate pentru șiruri de caractere traductibile.

Declanșări

zilnic, depozit post-commit, depozit post-update

Publică traducerile în rețeaua de livrare de conținut pentru a fi utilizate în localizarea JavaScript sau HTML.

Poate fi utilizat pentru a localiza pagini HTML statice sau pentru a încărca localizarea în codul JavaScript.

Generează un URL unic pentru componenta dvs. pe care îl puteți include în paginile HTML pentru a le localiza. Consultați Traducerea HTML și JavaScript folosind Weblate CDN pentru mai multe detalii.

Eliminați șirurile de caractere goale

Nou în versiunea 4.4.

ID add-on

weblate.cleanup.blank

Configurație

Acest add-on nu are nicio configurație.

Declanșări

depozit post-commit, depozit post-update

Elimină șirurile de caractere fără traducere din fișierele de traducere.

Utilizați această opțiune pentru a nu avea șiruri goale în fișierele de traducere (de exemplu, dacă biblioteca de localizare le afișează ca fiind lipsă în loc să revină la șirul sursă).

Curățați fișierele de traducere

ID add-on

weblate.cleanup.generic

Configurație

Acest add-on nu are nicio configurație.

Declanșări

depozitul pre-commit, depozitul post-update

Actualizarea tuturor fișierelor de traducere pentru a se potrivi cu fișierul de bază monolingv. Pentru majoritatea formatelor de fișiere, acest lucru înseamnă eliminarea cheilor de traducere vechi care nu mai sunt prezente în fișierul de bază.

Adăugați limbile lipsă

ID add-on

weblate.consistency.languages

Configurație

Acest add-on nu are nicio configurație.

Declanșări

zilnic, depozit post-adăugare

Asigură utilizarea unui set coerent de limbaje pentru toate componentele unui proiect.

Limbile lipsă sunt verificate o dată la 24 de ore și atunci când sunt adăugate noi limbi în Weblate.

Spre deosebire de majoritatea celorlalte, acest add-on afectează întregul proiect.

Sugestie

Traduceți automat șirurile nou adăugate cu Traducere automată.

Descoperirea componentelor

ID add-on

weblate.discovery.discovery

Configurație

match

Expresie regulată pentru a potrivi fișierele de traducere cu

file_format

Formatul fișierului

name_template

Personalizați numele componentei

base_file_template

Definiți numele fișierului de bază monolingv

Se lasă gol pentru fișierele de traducere bilingve.

new_base_template

Definiți fișierul de bază pentru noile traduceri

Numele fișierului utilizat pentru crearea de noi traduceri. Pentru gettext, alegeți fișierul .pot.

language_regex

Filtru lingvistic

Expresie regulată pentru filtrarea fișierelor de traducere la scanarea pentru filemask.

copy_addons

Clonarea addon-urilor din componenta principală în cele nou create

remove

Eliminarea componentelor pentru fișiere inexistente

confirm

Confirm că potrivirile de mai sus par corecte

Declanșări

depozit post-update

Adaugă sau elimină automat componente ale proiectului pe baza modificărilor de fișiere din sistemul de control al versiunilor.

Se declanșează de fiecare dată când VCS este actualizat și, în rest, este similară comenzii de gestionare import_project. În acest fel, puteți urmări mai multe componente de traducere în cadrul unui VCS.

Potrivirea se face cu ajutorul expresiilor regulate, ceea ce permite o configurare complexă, dar sunt necesare anumite cunoștințe în acest sens. Câteva exemple pentru cazuri de utilizare obișnuită pot fi găsite în secțiunea de ajutor a addon-ului.

După ce apăsați pe Save, va fi prezentată o previzualizare a componentelor corespunzătoare, de unde puteți verifica dacă configurația se potrivește cu nevoile dumneavoastră:

_images/addon-discovery.png

Sugestie

Component discovery add-on utilizează URL-uri interne Weblate. Este o modalitate convenabilă de a partaja configurația VCS între mai multe componente. Componentele legate utilizează depozitul local al componentei principale, configurat prin completarea weblate://project/main-component în câmpul Depozitul de cod sursă (în ManageSettingsVersion control system) al fiecărei componente respective. Acest lucru economisește timp cu configurarea și, de asemenea, resurse de sistem.

Editare în masă

Nou în versiunea 3.11.

ID add-on

weblate.flags.bulk

Configurație

q

Interogare prin exemplu

state

Stat pentru a seta

Alegerile disponibile:

Nu modificați

Necesită editare

Tradus

Aprobat

add_flags

Stegulețe de traducere de adăugat

remove_flags

Indicatoare de traducere de eliminat

add_labels

Etichete de adăugat

remove_labels

Etichete de îndepărtat

Declanșări

actualizare componentă

Editarea în bloc a stegulețelor, etichetelor sau stărilor șirurilor de caractere.

Automatizați etichetarea începând cu interogarea de căutare NOT has:label și adăugați etichete până când toate șirurile au toate etichetele necesare. Se pot efectua și alte operațiuni automatizate pentru metadatele Weblate.

Exemple:

Etichetarea automată a șirurilor noi

Interogare de căutare

NOT has:label

Etichete de adăugat

recent

Marcarea tuturor intrărilor din registrul de modificări Fișiere de metadate ale magazinului de aplicații doar pentru citire

Interogare de căutare

language:en AND key:changelogs/

Stegulețe de traducere de adăugat

read-only

Marcați traducerile neschimbate ca fiind „Needs editing”

Nou în versiunea 3.1.

ID add-on

weblate.flags.same_edit

Configurație

Acest add-on nu are nicio configurație.

Declanșări

unitate post-creare

Ori de câte ori un nou șir traductibil este importat din VCS și se potrivește cu un șir sursă, acesta este marcat ca necesitând editare în Weblate. Este deosebit de util pentru formatele de fișiere care includ șiruri sursă pentru șiruri netraduse.

Sugestie

De asemenea, este posibil să doriți să întăriți verificarea Traducere neschimbată prin adăugarea indicatorului strict-same la Steaguri de traducere.

Marcați noile șiruri sursă ca fiind „Necesită editare”

ID add-on

weblate.flags.source_edit

Configurație

Acest add-on nu are nicio configurație.

Declanșări

unitate post-creare

Ori de câte ori un nou șir sursă este importat din VCS, acesta este marcat ca necesitând editare în Weblate. În acest fel, puteți filtra și edita cu ușurință șirurile sursă scrise de dezvoltatori.

Marcați noile traduceri ca fiind „Needs editing”

ID add-on

weblate.flags.target_edit

Configurație

Acest add-on nu are nicio configurație.

Declanșări

unitate post-creare

Ori de câte ori un nou șir traductibil este importat din VCS, acesta este marcat ca necesitând editare în Weblate. În acest fel, puteți filtra și edita cu ușurință traducerile create de dezvoltatori.

Generator de statistici

ID add-on

weblate.generate.generate

Configurație

filename

Numele fișierului generat

template

Conținutul fișierului generat

Declanșări

depozit pre-commit

Generează un fișier care conține informații detaliate despre starea traducerii.

Puteți utiliza un șablon Django atât în numele fișierului, cât și în conținut; consultați Marcarea șablonului pentru o descriere detaliată a marcajului.

De exemplu, generarea unui fișier de sinteză pentru fiecare traducere:

Numele fișierului generat

locale/{{ language_code }}.json

Conținut
{
   "language": "{{ language_code }}",
   "strings": "{{ stats.all }}",
   "translated": "{{ stats.translated }}",
   "last_changed": "{{ stats.last_changed }}",
   "last_author": "{{ stats.last_author }}",
}

Generarea de pseudolocale

ID add-on

weblate.generate.pseudolocale

Configurație

source

Șiruri de surse

target

Traducerea țintă

prefix

Prefixul șirului

suffix

Sufixul șirului

Declanșări

actualizare componentă, zilnic

Generează o traducere prin adăugarea automată a prefixului și sufixului la șirurile sursă.

Pseudolocalele sunt utile pentru a găsi șiruri de caractere care nu sunt pregătite pentru localizare. Acest lucru se realizează prin modificarea tuturor șirurilor sursă traductibile pentru a facilita identificarea șirurilor nealterate la rularea aplicației în limba pseudolocală.

De asemenea, este posibil să se găsească șiruri de caractere ale căror omologi localizați ar putea să nu se potrivească cu aspectul.

Sugestie

Puteți folosi limbi reale pentru testare, dar există pseudolocale dedicate disponibile în Weblate - en_XA și ar_XB.

Sugestie

Puteți utiliza acest add-on pentru a începe traducerea într-o nouă locație a unei limbi existente sau a unei limbi similare. După ce adăugați traducerea la componentă, urmați la add-on. Exemplu: Dacă aveți fr și doriți să începeți traducerea fr_CA, setați pur și simplu fr ca sursă, fr_CA ca țintă și lăsați prefixul și sufixul goale.

Dezinstalați add-on-ul după ce ați completat noua traducere pentru a împiedica Weblate să modifice traducerile făcute după copiere.

Contributori în comentariu

ID add-on

weblate.gettext.authors

Configurație

Acest add-on nu are nicio configurație.

Declanșări

depozit pre-commit

Actualizează partea de comentarii din antetul fișierului PO pentru a include numele contribuabililor și anii de contribuție.

Antetul fișierului PO va arăta în felul următor:

# Michal Čihař <michal@cihar.com>, 2012, 2018, 2019, 2020.
# Pavel Borecki <pavel@example.com>, 2018, 2019.
# Filip Hron <filip@example.com>, 2018, 2019.
# anonymous <noreply@weblate.org>, 2019.

Actualizarea variabilei ALL_LINGUAS în fișierul „configure”

ID add-on

weblate.gettext.configure

Configurație

Acest add-on nu are nicio configurație.

Declanșări

depozit post-adăugare, zilnic

Actualizează variabila ALL_LINGUAS din configure, configure.in sau din orice fișier configure.ac, atunci când se adaugă o nouă traducere.

Personalizați ieșirea gettext

ID add-on

weblate.gettext.customize

Configurație

width

Înfășurarea liniilor lungi

În mod implicit, gettext înfășoară liniile la 77 de caractere și la liniile noi. Dacă se folosește parametrul –no-wrap, se face o înfășurare numai la liniile noi.

Alegerile disponibile:

Întoarceți liniile la 77 de caractere și la liniile noi

Întoarceți liniile numai la liniile noi

Fără înfășurare de linie

Declanșări

depozitare post-încărcare

Permite personalizarea comportamentului ieșirii gettext, de exemplu înfășurarea liniilor.

Acesta oferă următoarele opțiuni:

  • Întoarceți liniile la 77 de caractere și la liniile noi

  • Întoarceți liniile numai la liniile noi

  • Fără înfășurare de linie

Notă

În mod implicit, gettext înfășoară liniile la 77 de caractere și la liniile noi. Dacă se folosește parametrul --no-wrap, se face o încadrare numai la liniile noi.

Actualizarea fișierului LINGUAS

ID add-on

weblate.gettext.linguas

Configurație

Acest add-on nu are nicio configurație.

Declanșări

depozit post-adăugare, zilnic

Actualizează fișierul LINGUAS atunci când se adaugă o nouă traducere.

Generarea de fișiere MO

ID add-on

weblate.gettext.mo

Configurație

path

Calea de acces a fișierului MO generat

Dacă nu este specificat, se va utiliza locația fișierului PO.

Declanșări

depozit pre-commit

Generează automat un fișier MO pentru fiecare fișier PO modificat.

Locația fișierului MO generat poate fi personalizată, iar câmpul pentru acesta utilizează Marcarea șablonului.

Actualizarea fișierelor PO pentru a se potrivi cu POT (msgmerge)

ID add-on

weblate.gettext.msgmerge

Configurație

previous

Păstrați mesajele anterioare ale șirurilor traduse

no_location

Eliminați locațiile șirurilor traduse

fuzzy

Utilizați potrivirea fuzzy

Declanșări

depozit post-update

Actualizează toate fișierele PO (as configured by Masca de fișier) pentru a se potrivi cu fișierul POT (as configured by Șablon pentru traduceri noi) utilizând msgmerge.

Se declanșează ori de câte ori sunt extrase noi modificări din depozitul din amonte. Majoritatea opțiunilor de linie de comandă msgmerge pot fi setate prin intermediul configurației add-on-ului.

Comenzi Git Squash

ID add-on

weblate.git.squash

Configurație

squash

Compromiteți strivirea

Alegerile disponibile:

Toate angajamentele într-una singură

language – Pe limbă

file – Pe fișier

author – Pe autor

append_trailers

Adăugați trailere la mesajul de confirmare comprimat

Liniile de final sunt linii care se aseamănă cu anteturile de e-mail RFC 822, la sfârșitul părții de formă liberă a unui mesaj de confirmare, cum ar fi „Co-autor: …”.

commit_message

Mesaj de angajament

Acest mesaj de confirmare va fi utilizat în locul mesajelor de confirmare combinate de la confirmările strivite.

Declanșări

depozit post-commit

Eliminarea modificărilor din Git înainte de a împinge modificările.

Comițările Git pot fi eliminate înainte de împingerea modificărilor în unul dintre următoarele moduri:

Nou în versiunea 3.4.

  • Toate angajamentele într-una singură

  • Pe limbă

  • Pe fișier

Nou în versiunea 3.5.

  • Pentru fiecare autor în parte

Mesajele de confirmare originale sunt păstrate, dar se pierde paternitatea, cu excepția cazului în care se selectează Per author sau mesajul de confirmare este personalizat pentru a o include.

Nou în versiunea 4.1.

Mesajele de confirmare originale pot fi opțional înlocuite cu un mesaj de confirmare personalizat.

Remetele (commit lines like Co-authored-by: ) pot fi opțional eliminate din mesajele de confirmare originale și adăugate la sfârșitul mesajului de confirmare strivit. Acest lucru generează, de asemenea, creditul corespunzător Co-authored-by: pentru fiecare traducător.

Personalizați ieșirea JSON

ID add-on

weblate.json.customize

Configurație

sort_keys

Sortarea cheilor JSON

indent

Indentarea JSON

style

Stil de indentare JSON

Alegerile disponibile:

spaces – Spații

tabs – Tab-uri

Declanșări

depozitare post-încărcare

Permite ajustarea comportamentului de ieșire JSON, de exemplu, indentarea sau sortarea.

Formatează fișierul de proprietăți Java

ID add-on

weblate.properties.sort

Configurație

Acest add-on nu are nicio configurație.

Declanșări

depozit pre-commit

Sortează fișierul de proprietăți Java.

Îndepărtarea modului învechit

Nou în versiunea 3.7.

ID add-on

weblate.removal.comments

Configurație

age

Zile de păstrare

Declanșări

zilnic

Stabiliți un interval de timp pentru eliminarea comentariilor.

Acest lucru poate fi util pentru a elimina comentariile vechi care ar putea fi depășite. Folosiți-o cu grijă, deoarece faptul că comentariile devin vechi nu înseamnă că și-au pierdut importanța.

Eliminarea sugestiilor învechite

Nou în versiunea 3.7.

ID add-on

weblate.removal.suggestions

Configurație

age

Zile de păstrare

votes

Pragul de vot

Pragul de eliminare. Acest câmp nu are niciun efect dacă votul este dezactivat.

Declanșări

zilnic

Stabiliți un termen pentru eliminarea sugestiilor.

Poate fi foarte utilă în legătură cu votarea sugestiilor (see Evaluare reciprocă) pentru a elimina sugestiile care nu primesc suficiente voturi pozitive într-un anumit interval de timp.

Actualizarea fișierelor RESX

Nou în versiunea 3.9.

ID add-on

weblate.resx.update

Configurație

Acest add-on nu are nicio configurație.

Declanșări

depozit post-update

Actualizarea tuturor fișierelor de traducere pentru a se potrivi cu fișierul de bază monolingv din amonte. Șirurile nefolosite sunt eliminate, iar cele noi sunt adăugate ca copii ale șirului sursă.

Sugestie

Utilizați Curățați fișierele de traducere dacă doriți să eliminați doar cheile de traducere vechi.

Personalizați ieșirea YAML

Nou în versiunea 3.10.2.

ID add-on

weblate.yaml.customize

Configurație

indent

Indentarea YAML

width

Înfășurarea liniilor lungi

Alegerile disponibile:

Întoarceți liniile la 80 de caractere

Întoarceți liniile la 100 de caractere

Întoarceți liniile la 120 de caractere

Înfășurați liniile la 180 de caractere

Fără înfășurare de linie

line_break

Pauze de linie

Alegerile disponibile:

DOS (rn)

unix – UNIX (\n)

mac – MAC (\r)

Declanșări

depozitare post-încărcare

Permite ajustarea comportamentului de ieșire YAML, de exemplu, lungimea liniei sau liniile noi.

Personalizarea listei de add-on-uri

Lista de add-on-uri este configurată prin WEBLATE_ADDONS. Pentru a adăuga un alt addon, este suficient să includeți numele absolut al clasei în această setare.

Add-on de scriere

Puteți să vă scrieți propriile add-on-uri, să creați o subclasă de weblate.addons.base.BaseAddon pentru a defini metadatele addon-ului și apoi să implementați un callback pentru a face procesarea.

Executarea scripturilor din add-on

Suplimentele pot fi utilizate și pentru a executa scripturi externe. Acest lucru era integrat în Weblate, dar acum trebuie să scrieți niște cod pentru a înfășura scriptul vostru cu un add-on.

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
"""Example pre commit script."""


from django.utils.translation import gettext_lazy as _

from weblate.addons.events import EVENT_PRE_COMMIT
from weblate.addons.scripts import BaseScriptAddon


class ExamplePreAddon(BaseScriptAddon):
    # Event used to trigger the script
    events = (EVENT_PRE_COMMIT,)
    # Name of the addon, has to be unique
    name = "weblate.example.pre"
    # Verbose name and long descrption
    verbose = _("Execute script before commit")
    description = _("This addon executes a script.")

    # Script to execute
    script = "/bin/true"
    # File to add in commit (for pre commit event)
    # does not have to be set
    add_file = "po/{{ language_code }}.po"

Pentru instrucțiuni de instalare, consultați Verificări de calitate personalizate, addon-uri și auto-corectări.

Scriptul este executat cu directorul curent setat la rădăcina depozitului VCS pentru orice componentă dată.

În plus, sunt disponibile următoarele variabile de mediu:

WL_VCS

Sistemul de control al versiunilor utilizat.

WL_REPO

URL-ul depozitului din amonte.

WL_PATH

Calea absolută către depozitul VCS.

WL_BRANCH

Nou în versiunea 2.11.

Ramura de depozit configurată în componenta curentă.

WL_FILEMASK

Masca de fișier pentru componenta curentă.

WL_TEMPLATE

Numele de fișier al șablonului pentru traducerile monolingve (poate fi gol).

WL_NEW_BASE

Nou în versiunea 2.14.

Numele de fișier al fișierului utilizat pentru crearea de noi traduceri (poate fi gol).

WL_FILE_FORMAT

Format de fișier utilizat în componenta curentă.

WL_LANGUAGE

Limba traducerii procesate în prezent (nu este disponibilă pentru cârligele la nivel de componentă).

WL_PREVIOUS_HEAD

HEAD anterior după actualizare (disponibil numai după rularea cârligului post-update).

WL_COMPONENT_SLUG

Nou în versiunea 3.9.

Denumirea componentei utilizată pentru a construi URL-ul.

WL_PROJECT_SLUG

Nou în versiunea 3.9.

Denumirea proiectului utilizată pentru a construi URL-ul.

WL_COMPONENT_NAME

Nou în versiunea 3.9.

Denumirea componentei.

WL_PROJECT_NAME

Nou în versiunea 3.9.

Numele proiectului.

WL_COMPONENT_URL

Nou în versiunea 3.9.

URL-ul componentei.

WL_ENGAGE_URL

Nou în versiunea 3.9.

URL de angajare a proiectului.

Prelucrarea depozitelor după actualizare

Poate fi utilizat pentru a actualiza fișierele de traducere atunci când sursa VCS din amonte se modifică. Pentru a realiza acest lucru, vă rugăm să rețineți că Weblate vede numai fișierele trimise în VCS, deci trebuie să trimiteți modificările ca parte a scriptului.

De exemplu, cu Gulp puteți face acest lucru folosind următorul cod:

#! /bin/sh
gulp --gulpfile gulp-i18n-extract.js
git commit -m 'Update source strings' src/languages/en.lang.json

Pre-angajare de procesare a traducerilor

Utilizați scriptul de trimitere pentru a modifica automat o traducere înainte de a fi trimisă în depozit.

Acesta este transmis ca un singur parametru care constă în numele de fișier al unei traduceri curente.

Memorie de traducere

Nou în versiunea 2.20.

Weblate vine cu o memorie de traducere încorporată care constă din următoarele:

Conținutul din memoria de traducere poate fi aplicat în două moduri:

Pentru sfaturi de instalare, consultați Memorie de traducere Weblate, care este activat în mod implicit.

Domeniul de aplicare al memoriei de traducere

Nou în versiunea 3.2: În versiunile anterioare, memoria de traducere putea fi încărcată numai dintr-un fișier care corespundea domeniului de aplicare al memoriei de traducere importat curent.

Domeniile memoriilor de traducere există pentru a permite atât confidențialitatea, cât și partajarea traducerilor, în funcție de comportamentul dorit.

Memorie de traducere importată

Importul de date arbitrare din memoria de traducere utilizând comanda import_memory face ca conținutul memoriei să fie disponibil tuturor utilizatorilor și proiectelor.

Memorie de traducere per utilizator

Stochează automat toate traducerile utilizatorilor în memoria personală de traducere a fiecărui utilizator în parte.

Memorie de traducere pe proiect

Toate traducerile din cadrul unui proiect sunt stocate automat într-o memorie de traducere a proiectului, disponibilă numai pentru acest proiect.

Memorie partajată de traducere

Toate traducerile din cadrul proiectelor cu memoria de traducere partajată activată sunt stocate într-o memorie de traducere partajată disponibilă pentru toate proiectele.

Vă rugăm să vă gândiți cu atenție dacă doriți să activați această funcție pentru instalațiile Weblate partajate, deoarece poate avea implicații grave:

  • Traducerile pot fi folosite de oricine altcineva.

  • Acest lucru ar putea duce la dezvăluirea de informații secrete.

Gestionarea memoriei de traducere

Interfață utilizator

Nou în versiunea 3.2.

În interfața de bază a utilizatorului puteți gestiona memoriile de traducere pentru fiecare utilizator și pentru fiecare proiect. Aceasta poate fi utilizată pentru a descărca, șterge sau importa memorii de traducere.

Sugestie

Memoria de traducere în JSON poate fi importată în Weblate, TMX este furnizat pentru interoperabilitate cu alte instrumente.

_images/memory.png

Interfața de gestionare

Există mai multe comenzi de gestionare pentru a manipula conținutul memoriei de traducere. Acestea operează asupra memoriei de traducere ca întreg, fără a fi filtrate de domenii de aplicare (cu excepția cazului în care sunt solicitate prin parametri):

dump_memory

Exportă memoria în JSON

import_memory

Importă fișiere TMX sau JSON în memoria de traducere

Configurație

Toate setările sunt stocate în settings.py (așa cum este normal pentru Django).

Notă

După modificarea oricăreia dintre aceste setări, trebuie să reporniți Weblate - atât procesele WSGI, cât și Celery.

În cazul în care este rulat ca mod_wsgi, trebuie să reporniți Apache pentru a reîncărca configurația.

Vezi și

De asemenea, consultați Documentația Django pentru parametrii de configurare a lui Django.

AKISMET_API_KEY

Weblate poate utiliza Akismet pentru a verifica dacă sugestiile anonime primite sunt spam. Vizitați akismet.com pentru a achiziționa o cheie API și a o asocia cu un site.

ANONYMOUS_USER_NAME

Numele de utilizator al utilizatorilor care nu sunt conectați.

AUDITLOG_EXPIRY

Nou în versiunea 3.6.

Câte zile trebuie să păstreze Weblate jurnalele de audit, care conțin informații despre activitatea contului.

Valoarea implicită este de 180 de zile.

AUTH_LOCK_ATTEMPTS

Nou în versiunea 2.14.

Numărul maxim de încercări de autentificare eșuate înainte de a se aplica limitarea vitezei.

Aceasta se aplică în prezent în următoarele locații:

  • Autentificare. Șterge parola contului, împiedicând utilizatorul să se conecteze fără a solicita o nouă parolă.

  • Parola se resetează. Împiedică trimiterea de noi e-mailuri, evitând spamul utilizatorilor cu prea multe încercări de resetare a parolei.

Valoarea implicită este 10.

Vezi și

Limitarea ratei,

AUTO_UPDATE

Nou în versiunea 3.2.

Schimbat în versiunea 3.11: Opțiunea originală de activare/dezactivare a fost schimbată pentru a diferenția ce șiruri de caractere sunt acceptate.Opțiunea originală de activare/dezactivare a fost schimbată pentru a diferenția ce șiruri de caractere sunt acceptate.

Actualizează zilnic toate depozitele.

Sugestie

Util dacă nu folosiți Cârlige de notificare pentru a actualiza automat depozitele Weblate.

Notă

Pe lângă selectarea șirurilor de caractere, există opțiuni de activare/dezactivare pentru compatibilitate retroactivă.

Opțiunile sunt:

"none"

Nu există actualizări zilnice.

"remote" also False

Actualizați numai telecomenzile.

"full" also True

Actualizarea telecomenzilor și îmbinarea copiei de lucru.

Notă

Acest lucru necesită ca Sarcini de fundal folosind Celery să funcționeze și va intra în vigoare după ce va fi repornit.

AVATAR_URL_PREFIX

Prefix pentru construirea URL-urilor avatarurilor ca: ${{AVATAR_URL_PREFIX}/avatar/${MAIL_HASH}?${{PARAMS}}. Se știe că funcționează următoarele servicii:

Gravatar (implicit), conform https://gravatar.com/

AVATAR_URL_PREFIX = 'https://www.gravatar.com/'

Libravatar, conform https://www.libravatar.org/

AVATAR_URL_PREFIX = 'https://www.libravatar.org/'

AUTH_TOKEN_VALID

Nou în versiunea 2.14.

Cât timp sunt valabile simbolul de autentificare și parola temporară din e-mailurile de resetare a parolei. Se setează în număr de secunde, implicit la 172800 (2 zile).

AUTH_PASSWORD_DAYS

Nou în versiunea 2.15.

Câte zile de utilizare a aceleiași parole trebuie să fie permise.

Notă

Modificările de parole efectuate înainte de Weblate 2.15 nu vor fi luate în considerare în această politică.

Valoarea implicită este de 180 de zile.

AUTOFIX_LIST

Lista de corecții automate care trebuie aplicate la salvarea unui șir de caractere.

Notă

Furnizați o cale complet calificată către clasa Python care implementează interfața autofixer.

Corecții disponibile:

weblate.trans.autofixes.whitespace.SameBookendingWhitespace

Potrivește spațiile albe de la începutul și sfârșitul șirului cu sursa.

weblate.trans.autofixes.chars.ReplaceTrailingDotsWithEllipsis

Înlocuiește punctele de sfârșit (….) dacă șirul sursă are o elipsă corespunzătoare (…).

weblate.trans.autofixes.chars.RemoveZeroSpace

Îndepărtează caracterele de spațiu de lățime zero dacă sursa nu conține niciunul.

weblate.trans.autofixes.chars.RemoveControlChars

Elimină caracterele de control în cazul în care sursa nu conține niciunul.

weblate.trans.autofixes.html.BleachHTML

Îndepărtează marcajele HTML nesigure din șirurile marcate ca safe-html (see HTML nesigur).

Puteți selecta pe care să le utilizați:

AUTOFIX_LIST = (
    "weblate.trans.autofixes.whitespace.SameBookendingWhitespace",
    "weblate.trans.autofixes.chars.ReplaceTrailingDotsWithEllipsis",
)

BACKGROUND_TASKS

Nou în versiunea 4.5.2.

Definește cât de des trebuie declanșate sarcinile de întreținere de lungă durată pentru o componentă.

În momentul de față acest lucru controlează:

Opțiuni posibile:

  • monthly (aceasta este valoarea implicită)

  • weekly

  • daily

  • never

Notă

Creșterea frecvenței nu este recomandată atunci când Weblate conține mii de componente.

BASE_DIR

Directorul de bază în care sunt localizate sursele Weblate. Utilizat pentru a deriva în mod implicit alte câteva căi de acces:

Valoarea implicită: Directorul de nivel superior al surselor Weblate.

BASIC_LANGUAGES

Nou în versiunea 4.4.

Lista de limbi care trebuie oferite utilizatorilor pentru a începe o nouă traducere. Dacă nu este specificată, se utilizează lista în-corporată care include toate limbile utilizate în mod obișnuit, dar fără variantele specifice fiecărei țări.

Acest lucru limitează doar utilizatorii neprivilegiați să adauge limbi nedorite. Administratorilor de proiect li se prezintă în continuare o selecție completă a limbilor definite în Weblate.

Notă

Acest lucru nu definește noi limbi pentru Weblate, ci doar le filtrează pe cele existente în baza de date.

Exemplu:

BASIC_LANGUAGES = {"cs", "it", "ja", "en"}

BORG_EXTRA_ARGS

Nou în versiunea 4.9.

You can pass additional arguments to borg create when built-in backups are triggerd.

Exemplu:

BORG_EXTRA_ARGS = ["--exclude", "vcs/"]

CSP_SCRIPT_SRC, CSP_IMG_SRC, CSP_CONNECT_SRC, CSP_STYLE_SRC, CSP_FONT_SRC

Personalizați antetul Content-Security-Policy pentru Weblate. Antetul este generat automat pe baza integrărilor activate cu servicii terțe (Matomo, Google Analytics, Sentry, …).

Toate acestea au ca valoare implicită o listă goală.

Exemplu:

# Enable Cloudflare Javascript optimizations
CSP_SCRIPT_SRC = ["ajax.cloudflare.com"]

CHECK_LIST

Lista controalelor de calitate care trebuie efectuate asupra unei traduceri.

Notă

Furnizați o cale complet calificată către clasa Python care implementează interfața de verificare.

Ajustați lista de controale pentru a le include pe cele relevante pentru dumneavoastră.

Toate verificările încorporate Controale de calitate sunt activate în mod implicit, de unde puteți modifica aceste setări. În mod implicit, acestea sunt comentate în Exemplu de configurare, astfel încât sunt utilizate valorile implicite. Se efectuează apoi noi verificări pentru fiecare nouă versiune Weblate.

Puteți dezactiva toate verificările:

CHECK_LIST = ()

Puteți porni doar câteva:

CHECK_LIST = (
    "weblate.checks.chars.BeginNewlineCheck",
    "weblate.checks.chars.EndNewlineCheck",
    "weblate.checks.chars.MaxLengthCheck",
)

Notă

Modificarea acestei setări afectează doar traducerile nou modificate, verificările existente vor fi stocate în continuare în baza de date. Pentru a aplica, de asemenea, modificările la traducerile stocate, rulați updatechecks.

COMMENT_CLEANUP_DAYS

Nou în versiunea 3.6.

Ștergeți comentariile după un anumit număr de zile. Valoarea implicită este None, ceea ce înseamnă că nu se șterge deloc.

COMMIT_PENDING_HOURS

Nou în versiunea 2.10.

Numărul de ore care trec între confirmarea modificărilor în așteptare prin intermediul sarcinii de fundal.

CONTACT_FORMĂ

Nou în versiunea 4.6.

Configurează modul în care se trimit e-mailurile din formularul de contact. Alege o configurație care să corespundă configurației serverului tău de e-mail.

"reply-to"

Expeditorul este utilizat ca Reply-To, acesta este comportamentul implicit.

"from"

Expeditorul este utilizat ca From. Serverul dumneavoastră de e-mail trebuie să permită trimiterea unor astfel de e-mailuri.

DATA_DIR

Dosarul în care Weblate stochează toate datele. Acesta conține linkuri către depozitele VCS, un index fulltext și diverse fișiere de configurare pentru instrumente externe.

De obicei, există următoarele subdirectoare:

home

Directorul principal utilizat pentru apelarea scripturilor.

ssh

Chei SSH și configurare.

static

Locația implicită pentru fișierele Django statice, specificată de STATIC_ROOT. Vezi Servirea fișierelor statice.

Containerul Docker utilizează un volum separat pentru acest lucru, vezi Volumele containerelor Docker.

media

Locația implicită pentru fișierele media Django, specificată de MEDIA_ROOT. Conține capturi de ecran încărcate, vezi Context vizual pentru șiruri de caractere.

vcs

Depozite de control al versiunilor pentru traduceri.

backups

Datele zilnice de backup, vă rugăm să verificați Date descărcate pentru copii de rezervă pentru detalii.

celery

Date despre programatorul Celery, a se vedea Sarcini de fundal folosind Celery.

fonts:

Fonturi încărcate de utilizator, vezi Gestionarea fonturilor.

Notă

Acest director trebuie să poată fi scris de Weblate. Rularea ca uWSGI înseamnă că utilizatorul www-data trebuie să aibă acces de scriere la el.

Cel mai simplu mod de a realiza acest lucru este de a transforma utilizatorul în proprietar al directorului:

sudo chown www-data:www-data -R $DATA_DIR

Valoarea implicită este $BASE_DIR/data.

DATABASE_BACKUP

Nou în versiunea 3.1.

Dacă copiile de rezervă ale bazei de date trebuie să fie stocate ca text simplu, comprimate sau sărite. Valorile autorizate sunt:

  • "plain"

  • "comprimat"

  • "none"

DEFAULT_ACCESS_CONTROL

Nou în versiunea 3.3.

Setarea implicită de control al accesului pentru proiectele noi:

0

Public

1

Protected

100

Private

200

Custom

Utilizați Custom dacă gestionați ACL manual, ceea ce înseamnă că nu vă bazați pe gestionarea internă a Weblate.

DEFAULT_AUTO_WATCH

Nou în versiunea 4.5.

Configurează dacă Automatically watch projects on contribution trebuie activat pentru utilizatorii noi. Valoarea implicită este True.

Vezi și

Notificări

DEFAULT_RESTRICTED_COMPONENT

Nou în versiunea 4.1.

Valoarea implicită pentru restricția componentelor.

DEFAULT_ADD_MESSAGE, DEFAULT_ADDON_MESSAGE, DEFAULT_COMMIT_MESSAGE, DEFAULT_DELETE_MESSAGE, DEFAULT_MERGE_MESSAGE

Mesaje de confirmare implicite pentru diferite operații, vă rugăm să verificați Configurația componentei pentru detalii.

DEFAULT_ADDONS

Suplimentele implicite care se instalează pe fiecare componentă creată.

Notă

Această setare afectează numai componentele nou create.

Exemplu:

DEFAULT_ADDONS = {
    # Add-on with no parameters
    "weblate.flags.target_edit": {},
    # Add-on with parameters
    "weblate.autotranslate.autotranslate": {
        "mode": "suggest",
        "filter_type": "todo",
        "auto_source": "mt",
        "component": "",
        "engines": ["weblate-translation-memory"],
        "threshold": "80",
    },
}

DEFAULT_COMMITER_EMAIL

Nou în versiunea 2.4.

Adresă de e-mail a autorului de modificare implicită noreply@weblate.org.

DEFAULT_COMMITER_NAME

Nou în versiunea 2.4.

Numele de comisionar implicit la Weblate.

DEFAULT_LANGUAGE

Nou în versiunea 4.3.2.

Limba sursă implicită de utilizat, de exemplu în Limba sursă.

Valoarea implicită este en. Obiectul de limbă corespunzător trebuie să existe în baza de date.

DEFAULT_MERGE_STYLE

Nou în versiunea 3.4.

Stilul de fuziune pentru orice componentă nouă.

  • rebase - default

  • merge

DEFAULT_SHARED_TM

Nou în versiunea 3.2.

Configurează valoarea implicită a Utilizați memoria de traducere partajată și Contribuie la memoria de traducere partajată.

DEFAULT_TRANSLATION_PROPAGATION

Nou în versiunea 2.5.

Setare implicită pentru propagarea traducerii, valoarea implicită este True.

DEFAULT_PULL_MESSAGE

Titlu pentru noile cereri de extragere, implicit 'Update from Weblate'.

ENABLE_AVATARS

Dacă se activează avatarele bazate pe Gravatar pentru utilizatori. În mod implicit, această opțiune este activată.

Avatarurile sunt preluate și stocate în memoria cache pe server, ceea ce reduce riscul de scurgere a informațiilor private și accelerează experiența utilizatorului.

ENABLE_HOOKS

Dacă se activează cârligele anonime de la distanță.

ENABLE_HTTPS

Dacă să trimiteți linkuri către Weblate ca HTTPS sau HTTP. Această setare afectează e-mailurile trimise și URL-urile absolute generate.

În configurația implicită, acesta este, de asemenea, utilizat pentru mai multe setări Django legate de HTTPS - activează cookie-urile securizate, activează HSTS sau permite redirecționarea către un URL HTTPS.

Redirecționarea HTTPS ar putea fi problematică în unele cazuri și s-ar putea să vă confruntați cu o redirecționare infinită în cazul în care utilizați un proxy invers care face terminarea SSL și care nu transmite corect antetele de protocol către Django. Vă rugăm să modificați configurația proxy-ului dvs. invers pentru a emite antetele X-Forwarded-Proto sau Forwarded ori configurați SECURE_PROXY_SSL_HEADER pentru a permite Django să detecteze corect starea SSL.

ENABLE_SHARING

Activați/dezactivați meniul Share pentru ca utilizatorii să poată partaja progresul traducerii pe rețelele sociale.

GET_HELP_URL

Nou în versiunea 4.5.2.

URL-ul unde poate fi găsit suport pentru instanța Weblate.

GITLAB_CREDENTIALS

Nou în versiunea 4.3.

Lista pentru acreditările pentru serverele GitLab.

Sugestie

Utilizați acest lucru în cazul în care doriți ca Weblate să interacționeze cu mai multe dintre ele, pentru un singur punct final GitLab folosiți GITLAB_USERNAME și GITLAB_TOKEN.

GITLAB_CREDENTIALS = {
    "gitlab.com": {
        "username": "weblate",
        "token": "your-api-token",
    },
    "gitlab.example.com": {
        "username": "weblate",
        "token": "another-api-token",
    },
}

GITLAB_USERNAME

Numele de utilizator GitLab utilizat pentru a trimite cereri de fuziune pentru actualizări de traduceri.

GITLAB_TOKEN

Nou în versiunea 4.3.

Token de acces personal GitLab utilizat pentru a efectua apeluri API pentru actualizări de traduceri.

GITHUB_CREDENTIALS

Nou în versiunea 4.3.

Lista pentru acreditările pentru serverele GitHub.

Sugestie

Utilizați acest lucru în cazul în care doriți ca Weblate să interacționeze cu mai multe dintre ele, pentru un singur punct final GitHub folosiți GITHUB_USERNAME și GITHUB_TOKEN.

GITHUB_CREDENTIALS = {
    "api.github.com": {
        "username": "weblate",
        "token": "your-api-token",
    },
    "github.example.com": {
        "username": "weblate",
        "token": "another-api-token",
    },
}

GITHUB_USERNAME

Numele de utilizator GitHub utilizat pentru a trimite cereri de actualizare a traducerilor.

GITHUB_TOKEN

Nou în versiunea 4.3.

Token de acces personal GitHub utilizat pentru a efectua apeluri API pentru a trimite cereri de extragere pentru actualizări de traduceri.

GOOGLE_ANALYTICS_ID

ID-ul Google Analytics pentru a activa monitorizarea Weblate cu ajutorul Google Analytics.

HIDE_REPO_CREDENTIALS

Ascundeți acreditările de depozit din interfața web. În cazul în care aveți un URL de depozit cu utilizator și parolă, Weblate îl va ascunde atunci când informațiile aferente sunt afișate utilizatorilor.

De exemplu, în loc de https://user:password@git.example.com/repo.git, va apărea doar https://git.example.com/repo.git. În mod similar, încearcă să curețe și mesajele de eroare VCS.

Notă

Acest lucru este activat în mod implicit.

HIDE_VERSION

Nou în versiunea 4.3.1.

Ascunde informațiile despre versiune de utilizatorii neautentificați. De asemenea, toate legăturile de documentație indică ultima versiune în loc de documentația care corespunde versiunii instalate în prezent.

Ascunderea versiunii este o practică de securitate recomandată în unele corporații, dar aceasta nu împiedică atacatorul să afle versiunea prin sondarea comportamentului.

Notă

Acest lucru este dezactivat în mod implicit.

IP_BEHIND_REVERSE_PROXY

Nou în versiunea 2.14.

Indică dacă Weblate rulează în spatele unui proxy invers.

Dacă este setat la True, Weblate obține adresa IP dintr-un antet definit de IP_PROXY_HEADER.

Atenționare

Asigurați-vă că utilizați într-adevăr un proxy invers și că acesta setează acest antet, altfel utilizatorii vor putea falsifica adresa IP.

Notă

Acest lucru nu este activat în mod implicit.

IP_PROXY_HEADER

Nou în versiunea 2.14.

Indică antetul din care Weblate ar trebui să obțină adresa IP atunci când IP_BEHIND_REVERSE_PROXY este activat.

Valoarea implicită este HTTP_X_FORWARDED_FOR.

IP_PROXY_OFFSET

Nou în versiunea 2.14.

Indică ce parte din IP_PROXY_HEADER este utilizată ca adresă IP a clientului.

În funcție de configurația dvs., acest antet poate fi format din mai multe adrese IP (de exemplu X-Forwarded-For: a, b, client-ip) și puteți configura aici care adresă din antet este utilizată ca adresă IP a clientului.

Atenționare

Această setare afectează securitatea instalației dvs. și ar trebui să o configurați pentru a utiliza numai proxy-uri de încredere pentru a determina adresa IP.

Valoarea implicită este 0.

LICENSE_EXTRA

Licențe suplimentare de inclus în opțiunile de licență.

Notă

Fiecare definiție a licenței trebuie să fie un tandem format din numele scurt, numele lung și o adresă URL.

De exemplu:

LICENSE_EXTRA = [
    (
        "AGPL-3.0",
        "GNU Affero General Public License v3.0",
        "https://www.gnu.org/licenses/agpl-3.0-standalone.html",
    ),
]

LICENSE_FILTER

Schimbat în versiunea 4.3: Setarea acestei valori la o valoare goală dezactivează acum alerta de licență.

Filtrați lista de licențe care trebuie afișate. Aceasta dezactivează, de asemenea, alerta de licență atunci când este setată la gol.

Notă

Acest filtru utilizează denumirile scurte ale licențelor.

De exemplu:

LICENSE_FILTER = {"AGPL-3.0", "GPL-3.0-or-later"}

Următoarele dezactivează alerta de licență:

LICENSE_FILTER = set()

LICENSE_REQUIRED

Definește dacă atributul license din Configurația componentei este necesar.

Notă

Acest lucru este dezactivat în mod implicit.

LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH

Dacă lungimea unei anumite traduceri trebuie limitată. Restricția este lungimea șirului sursă * 10 caractere.

Sugestie

Setați această opțiune la False pentru a permite traduceri mai lungi (până la 10.000 de caractere), indiferent de lungimea șirului sursă.

Notă

Valoarea implicită este True.

LOCALIZE_CDN_URL și LOCALIZE_CDN_PATH

Aceste setări configurează addon-ul CDN de localizare JavaScript. LOCALIZE_CDN_URL definește URL-ul rădăcină unde este disponibil CDN-ul de localizare și LOCALIZE_CDN_PATH definește calea unde Weblate ar trebui să stocheze fișierele generate care vor fi servite la LOCALIZE_CDN_URL.

Sugestie

Pe Hosted Weblate, acesta folosește https://weblate-cdn.com/.

LOGIN_REQUIRED_URLS

O listă de URL-uri la care doriți să solicitați conectarea. (În afară de regulile standard integrate în Weblate).

Sugestie

Acest lucru vă permite să protejați cu parolă o întreagă instalație folosind:

LOGIN_REQUIRED_URLS = (r"/(.*)$",)
REST_FRAMEWORK["DEFAULT_PERMISSION_CLASSES"] = [
    "rest_framework.permissions.IsAuthenticated"
]

Sugestie

Este de dorit să se blocheze și accesul la API, așa cum se arată în exemplul de mai sus.

Vezi și

REQUIRE_LOGIN

LOGIN_REQUIRED_URLS_EXCEPTIONS

Lista de excepții pentru LOGIN_REQUIRED_URLS. Dacă nu este specificat, utilizatorilor li se permite să acceseze pagina de conectare.

Unele dintre excepțiile pe care ați putea dori să le includeți:

LOGIN_REQUIRED_URLS_EXCEPTIONS = (
    r"/accounts/(.*)$",  # Required for sign in
    r"/static/(.*)$",  # Required for development mode
    r"/widgets/(.*)$",  # Allowing public access to widgets
    r"/data/(.*)$",  # Allowing public access to data exports
    r"/hooks/(.*)$",  # Allowing public access to notification hooks
    r"/api/(.*)$",  # Allowing access to API
    r"/js/i18n/$",  # JavaScript localization
)

MATOMO_SITE_ID

ID-ul unui site din Matomo (fostul Piwik) pe care doriți să îl urmăriți.

Notă

Această integrare nu este compatibilă cu Matomo Tag Manager.

Vezi și

MATOMO_URL

MATOMO_URL

URL-ul complet (inclusiv bara oblică finală) al unei instalații Matomo (fostă Piwik) pe care doriți să o utilizați pentru a urmări utilizarea Weblate. Vă rugăm să consultați <https://matomo.org/> pentru mai multe detalii.

Sugestie

Această integrare nu este compatibilă cu Matomo Tag Manager.

De exemplu:

MATOMO_SITE_ID = 1
MATOMO_URL = "https://example.matomo.cloud/"

Vezi și

MATOMO_SITE_ID

MT_SERVICES

Schimbat în versiunea 3.0: Setarea a fost redenumită din MACHINE_TRANSLATION_SERVICES în MT_SERVICES pentru a fi în concordanță cu alte setări de traducere automată.

Lista de servicii de traducere automată care pot fi utilizate.

Notă

Multe dintre servicii au nevoie de o configurație suplimentară, cum ar fi cheile API, vă rugăm să verificați documentația lor Traducere automată pentru mai multe detalii.

Sugestie

Atunci când se utilizează containerul Docker, această configurație este generată automat pe baza cheilor API furnizate, a se vedea Setări de traducere automată.

MT_SERVICES = (
    "weblate.machinery.apertium.ApertiumAPYTranslation",
    "weblate.machinery.deepl.DeepLTranslation",
    "weblate.machinery.glosbe.GlosbeTranslation",
    "weblate.machinery.google.GoogleTranslation",
    "weblate.machinery.libretranslate.LibreTranslateTranslation",
    "weblate.machinery.microsoft.MicrosoftCognitiveTranslation",
    "weblate.machinery.microsoftterminology.MicrosoftTerminologyService",
    "weblate.machinery.mymemory.MyMemoryTranslation",
    "weblate.machinery.tmserver.AmagamaTranslation",
    "weblate.machinery.tmserver.TMServerTranslation",
    "weblate.machinery.yandex.YandexTranslation",
    "weblate.machinery.weblatetm.WeblateTranslation",
    "weblate.machinery.saptranslationhub.SAPTranslationHub",
    "weblate.memory.machine.WeblateMemory",
)

MT_APERTIUM_APY

URL-ul serverului Apertium-APy, https://wiki.apertium.org/wiki/Apertium-apy

MT_AWS_ACCESS_KEY_ID

ID-ul cheii de acces pentru Amazon Translate.

MT_AWS_SECRET_ACCES_KEY

Cheia secretă API pentru Amazon Translate.

MT_AWS_REGION

Numele regiunii de utilizat pentru Amazon Translate.

MT_BAIDU_ID

ID-ul de client pentru Baidu Zhiyun API, vă puteți înregistra la https://api.fanyi.baidu.com/api/trans/product/index

MT_BAIDU_SECRET

Client secret pentru Baidu Zhiyun API, vă puteți înregistra la https://api.fanyi.baidu.com/api/trans/product/index

MT_DEEPL_API_URL

Schimbat în versiunea 4.7: URL-ul API complet este acum configurat pentru a permite utilizarea planului gratuit. Înainte, era posibilă doar configurarea versiunii API folosind MT_DEEPL_API_VERSION.

URL-ul API care trebuie utilizat cu serviciul DeepL. La momentul redactării acestui articol, există API v1, precum și o versiune gratuită și una cu plată a API v2.

https://api.deepl.com/v2/ (implicit în Weblate)

Este destinat utilizării API în cadrul planului plătit, iar abonamentul este bazat pe utilizare.

https://api-free.deepl.com/v2/

Este destinat utilizării API în cadrul planului plătit, iar abonamentul este bazat pe utilizare.

https://api.deepl.com/v1/

Este destinat instrumentelor CAT și poate fi utilizat cu un abonament per utilizator.

Anterior, Weblate a fost clasificat ca un instrument CAT de către DeepL, așa că trebuia să utilizeze API v1, dar acum trebuie să utilizeze API v2. Prin urmare, este implicit v2 și puteți să o schimbați la v1 în cazul în care aveți un abonament CAT existent și doriți ca Weblate să îl folosească.

Cel mai simplu mod de a afla pe care dintre ele să o folosiți este să deschideți în browserul dumneavoastră o adresă URL precum cea de mai jos:

https://api.deepl.com/v2/translate?text=Hello&target_lang=FR&auth_key=XXX

Înlocuiți XXX cu auth_key. Dacă primiți un obiect JSON care conține „Bonjour”, înseamnă că aveți URL-ul corect; dacă nu, încercați celelalte trei.

MT_DEEPL_KEY

Cheia API pentru DeepL API, vă puteți înregistra la https://www.deepl.com/pro.html

MT_LIBRETRANSLATE_API_URL

Nou în versiunea 4.7.1.

URL-ul API pentru instanța LibreTranslate care urmează să fie utilizată.

https://libretranslate.com/ (instanță publică oficială)

Necesită o cheie API pentru a fi utilizată în afara site-ului web.

Oglinzile sunt documentate în depozitul LibreTranslate GitHub, unele dintre ele putând fi utilizate fără autentificare:

https://github.com/LibreTranslate/LibreTranslate#user-content-mirrors

MT_LIBRETRANSLATE_KEY

Nou în versiunea 4.7.1.

Cheia API pentru instanța LibreTranslate specificată în MT_LIBRETRANSLATE_API_URL.

MT_GOOGLE_KEY

Cheie API pentru Google Translate API v2, vă puteți înregistra la https://cloud.google.com/translate/docs

MT_GOOGLE_CREDENTIALS

Fișier de credențiale API v3 JSON obținut în consola Google cloud. Vă rugăm să furnizați o cale completă a sistemului de operare. Datele de acreditare sunt pentru fiecare cont de serviciu afiliat la un anumit proiect. Vă rugăm să consultați https://cloud.google.com/docs/authentication/getting-started pentru mai multe detalii.

MT_GOOGLE_PROJECT

ID-ul proiectului Google Cloud API v3 cu serviciul de traducere activat și facturarea activată. Vă rugăm să verificați https://cloud.google.com/appengine/docs/standard/nodejs/building-app/creating-project pentru mai multe detalii

MT_GOOGLE_LOCATION

API v3 Google Cloud App Engine poate fi specifică unei locații. Schimbați în consecință dacă soluția de rezervă implicită global nu funcționează pentru dvs.

Vă rugăm să consultați https://cloud.google.com/appengine/docs/locations pentru mai multe detalii

MT_MICROSOFT_BASE_URL

Domeniul URL-ului de bază al regiunii, așa cum este definit în secțiunea „URL-uri de bază”.

Valoarea implicită este api.cognitive.microsofttranslator.com pentru Azure Global.

Pentru Azure China, vă rugăm să utilizați api.translator.azure.cn.

MT_MICROSOFT_COGNITIVE_KEY

Cheia de client pentru Microsoft Cognitive Services Translator API.

MT_MICROSOFT_REGION

Prefixul regiunii, așa cum este definit în secțiunea „Autentificarea cu o resursă multiserviciu”.

MT_MICROSOFT_ENDPOINT_URL

Domeniul URL al punctului final al regiunii pentru tokenul de acces, astfel cum este definit în secțiunea „Autentificarea cu un token de acces”.

Valoarea implicită este api.cognitive.microsoft.com pentru Azure Global.

Pentru Azure China, vă rugăm să utilizați punctul final din Azure Portal.

MT_MODERNMT_KEY

Cheia API pentru motorul de traducere automată ModernMT.

MT_MODERNMT_URL

URL al ModernMT. Acesta este implicit https://api.modernmt.com/ pentru serviciul cloud.

MT_MYMEMORY_EMAIL

Adresa de e-mail de identificare MyMemory. Permite 1000 de cereri pe zi.

MT_MYMEMORY_KEY

Cheia de acces MyMemory pentru memoria de traducere privată, se utilizează cu MT_MYMEMORY_USER.

MT_MEMORIE_UTILIZATOR

ID-ul de utilizator MyMemory pentru memoria de traducere privată, se utilizează cu MT_MYMEMORY_KEY.

MT_NETEASE_KEY

Cheie de aplicație pentru NetEase Sight API, vă puteți înregistra la https://sight.youdao.com/

MT_NETEASE_SECRET

App secret pentru NetEase Sight API, vă puteți înregistra la https://sight.youdao.com/

MT_TMSERVER

URL-ul unde rulează tmserver.

MT_YANDEX_KEY

Cheia API pentru Yandex Translate API, vă puteți înregistra la https://yandex.com/dev/translate/

MT_YOUDAO_ID

ID-ul de client pentru Youdao Zhiyun API, vă puteți înregistra la https://ai.youdao.com/product-fanyi-text.s.

MT_YOUDAO_SECRET

Secret de client pentru Youdao Zhiyun API, vă puteți înregistra la https://ai.youdao.com/product-fanyi-text.s.

MT_SAP_BASE_URL

URL API către serviciul SAP Translation Hub.

MT_SAP_SANDBOX_APIKEY

Cheie API pentru utilizarea API sandbox

MT_SAP_UTILIZATOR

Numele tău de utilizator SAP

MT_SAP_PAROLA

Parola ta SAP

MT_SAP_USE_MT

Dacă să se utilizeze și servicii de traducere automată, pe lângă baza de date cu termeni. Valori posibile: True sau False

NEARBY_MESSAGES

Câte șiruri de caractere trebuie afișate în jurul șirului tradus în prezent. Aceasta este doar o valoare implicită, utilizatorii o pot ajusta în Profilul utilizatorului.

DEFAULT_PAGE_LIMIT

Nou în versiunea 4.7.

Numărul implicit de elemente care trebuie afișate atunci când este activă paginarea.

PAGURE_CREDENȚIALE

Nou în versiunea 4.3.2.

Lista pentru acreditările pentru serverele Pagure.

Sugestie

Utilizați acest lucru în cazul în care doriți ca Weblate să interacționeze cu mai multe dintre ele, pentru un singur endpoint Pagure folosiți PAGURE_USERNAME și PAGURE_TOKEN.

PAGURE_CREDENTIALS = {
    "pagure.io": {
        "username": "weblate",
        "token": "your-api-token",
    },
    "pagure.example.com": {
        "username": "weblate",
        "token": "another-api-token",
    },
}

NUME_UTILIZATOR_PAGURE

Nou în versiunea 4.3.2.

Numele de utilizator Pagure utilizat pentru a trimite cereri de fuziune pentru actualizări de traduceri.

PAGURE_TOKEN

Nou în versiunea 4.3.2.

Token de acces personal Pagure utilizat pentru a efectua apeluri API pentru actualizări de traduceri.

PRIVAT_URL

Nou în versiunea 4.8.1.

URL-ul în care instanța Weblate își afișează politica de confidențialitate.

Sugestie

Utile dacă vă găzduiți documentele juridice în afara Weblate pentru a le încorpora în Weblate, vă rugăm să verificați Legal pentru detalii.

Exemplu:

PRIVACY_URL = "https://weblate.org/terms/"

Vezi și

LEGAL_URL

RATELIMIT_TENTATIVE

Nou în versiunea 3.2.

Numărul maxim de încercări de autentificare înainte de a se aplica limitarea vitezei.

Valoarea implicită este 5.

FEREASTRĂ_RATELIMIT

Nou în versiunea 3.2.

Cât timp este acceptată autentificarea după ce se aplică limitarea ratei.

Un număr de secunde, în mod implicit 300 (5 minute).

RATELIMIT_LOCKOUT

Nou în versiunea 3.2.

Cât timp este blocată autentificarea după ce se aplică limitarea ratei.

Un număr de secunde, în mod implicit 600 (10 minute).

ÎNREGISTRARE_ALLOW_BACKENDS

Nou în versiunea 4.1.

Lista de backend-uri de autentificare care permit înregistrarea. Acest lucru limitează doar înregistrările noi, utilizatorii pot în continuare să se autentifice și să adauge autentificare utilizând toate backend-urile de autentificare configurate.

Se recomandă să păstrați activat REGISTRATION_OPEN în timp ce limitați backend-urile de înregistrare, în caz contrar, utilizatorii vor putea să se înregistreze, dar Weblate nu va afișa link-uri pentru înregistrare în interfața cu utilizatorul.

Exemplu:

REGISTRATION_ALLOW_BACKENDS = ["azuread-oauth2", "azuread-tenant-oauth2"]

Sugestie

Numele backend se potrivesc cu numele utilizate în URL pentru autentificare.

ÎNREGISTRARE_CAPTCHA

O valoare de True sau False care indică dacă înregistrarea de conturi noi este protejată de CAPTCHA. Această setare este opțională, iar în cazul în care nu este furnizată, se va lua valoarea implicită True.

Dacă este activată, un CAPTCHA este adăugat la toate paginile în care un utilizator își introduce adresa de e-mail:

  • Înregistrarea unui cont nou.

  • Recuperarea parolei.

  • Adăugarea de e-mail la un cont.

  • Formular de contact pentru utilizatorii care nu sunt conectați.

POTRIVIRE_MAIL_ÎNREGISTRARE

Nou în versiunea 2.17.

Vă permite să filtrați adresele de e-mail care se pot înregistra.

Valoarea implicită este .*, ceea ce permite înregistrarea oricărei adrese de e-mail.

Îl puteți utiliza pentru a restricționa înregistrarea la un singur domeniu de e-mail:

REGISTRATION_EMAIL_MATCH = r"^.*@weblate\.org$"

ÎNREGISTRARE_OPEN

Dacă înregistrarea de noi conturi este permisă în prezent. Această setare opțională poate rămâne valoarea implicită True sau poate fi modificată la False.

Această setare afectează autentificarea încorporată prin adresa de e-mail sau prin Python Social Auth (puteți să adăugați anumite back-end-uri la lista albă folosind REGISTRATION_ALLOW_BACKENDS).

Notă

În cazul în care se utilizează metode de autentificare de la terți, cum ar fi Autentificare LDAP, se ascunde doar formularul de înregistrare, dar utilizatorii noi ar putea fi în continuare capabili să se conecteze și să creeze conturi.

REPOSITORY_ALERT_THRESHOLD

Nou în versiunea 4.0.2.

Pragul de declanșare a unei alerte pentru depozitele depășite sau cele care conțin prea multe modificări. Valoarea implicită este 25.

NECESITĂ_LOGARE

Nou în versiunea 4.1.

Aceasta activează LOGIN_REQUIRED_URLS și configurează cadrul REST pentru a solicita autentificarea pentru toate punctele finale API.

Notă

Acest lucru este implementat în Exemplu de configurare. Pentru Docker, utilizați WEBLATE_REQUIRE_LOGIN.

SENTRY_DSN

Nou în versiunea 3.9.

Sentry DSN de utilizat pentru Colectarea rapoartelor de eroare.

SIMPLIFICARE_LIMBI

Utilizați coduri lingvistice simple pentru combinațiile implicite de limbă/țară. De exemplu, o traducere fr_FR va utiliza codul de limbă fr. Acesta este, de obicei, comportamentul dorit, deoarece simplifică listarea limbilor pentru aceste combinații implicite.

Dezactivați această opțiune dacă doriți să aveți traduceri diferite pentru fiecare variantă.

SITE_DOMENIU

Configurează domeniul site-ului. Acest lucru este necesar pentru a produce legături absolute corecte în multe domenii (de exemplu, e-mailuri de activare, notificări sau fluxuri RSS).

În cazul în care Weblate rulează pe un port non-standard, includeți-l și aici.

Exemple:

# Production site with domain name
SITE_DOMAIN = "weblate.example.com"

# Local development with IP address and port
SITE_DOMAIN = "127.0.0.1:8000"

Notă

Această setare trebuie să conțină doar numele domeniului. Pentru configurarea protocolului (activarea și impunerea HTTPS), utilizați ENABLE_HTTPS, iar pentru modificarea URL-ului, utilizați URL_PREFIX.

Sugestie

Pe un container Docker, domeniul site-ului este configurat prin WEBLATE_ALLOWED_HOSTS.

SITE_TITLU

Titlul site-ului care va fi folosit pentru site-ul web și pentru e-mailurile trimise.

CARACTERE_SPECIALE

Caractere suplimentare de inclus în tastatura vizuală, Tastatura vizuală.

Valoarea implicită este:

SPECIAL_CHARS = ("\t", "\n", "\u00a0", "…")

SINGLE_PROIECT

Nou în versiunea 3.8.

Redirecționează utilizatorii direct către un proiect sau o componentă în loc să afișeze tabloul de bord. Puteți să o setați la True și în acest caz funcționează doar în cazul în care există de fapt un singur proiect în Weblate. Alternativ, setați slug-ul proiectului și va redirecționa necondiționat către acest proiect.

Schimbat în versiunea 3.11: Setarea acceptă acum și o denumire a proiectului, pentru a forța afișarea acelui proiect unic.

Exemplu:

SINGLE_PROJECT = "test"

SSH_EXTRA_ARGS

Nou în versiunea 4.9.

Allows to add custom parameters when Weblate is invoking SSH. This is useful when connecting to servers using legacy encryption or other non-standard features.

For example when SSH connection in Weblate fails with Unable to negotiate with legacyhost: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1, you can enable that using:

SSH_EXTRA_ARGS = "-oKexAlgorithms=+diffie-hellman-group1-sha1"

Sugestie

The string is evaluated by shell, so make sure to quote any whitespace and special characters.

STARE_URL

URL-ul unde instanța Weblate își raportează starea.

ZILE_DE_CURĂȚENIE_SUGESTIE

Nou în versiunea 3.2.1.

Șterge automat sugestiile după un anumit număr de zile. Valoarea implicită este None, ceea ce înseamnă că nu se șterge nimic.

ACTUALIZARE_LIMBI

Nou în versiunea 4.3.2.

Controlează dacă baza de date a limbilor trebuie actualizată atunci când se execută migrarea bazei de date și este activată în mod implicit. Această setare nu are niciun efect asupra invocării setuplang.

URL_PREFIX

Această setare vă permite să rulați Weblate sub o anumită cale (în caz contrar, se bazează pe rularea de la rădăcina serverului web).

Notă

Pentru a utiliza această setare, trebuie, de asemenea, să vă configurați serverul pentru a elimina acest prefix. De exemplu, în cazul WSGI, acest lucru poate fi realizat prin setarea WSGIScriptAlias.

Sugestie

Prefixul trebuie să înceapă cu un /.

Exemplu:

URL_PREFIX = "/translations"

Notă

Această setare nu funcționează cu serverul încorporat în Django, va trebui să ajustați urls.py pentru a conține acest prefix.

VCS_BACKENDS

Configurarea backend-urilor VCS disponibile.

Notă

Weblate încearcă să utilizeze toate back-end-urile acceptate pentru care aveți instrumentele necesare.

Sugestie

Puteți limita opțiunile sau puteți adăuga back-end-uri VCS personalizate utilizând această opțiune.

VCS_BACKENDS = ("weblate.vcs.git.GitRepository",)

VCS_CLONE_DEPTH

Nou în versiunea 3.10.2.

Configurează cât de profundă trebuie să fie clonarea depozitelor Weblate.

Notă

În prezent, acest lucru este suportat doar în Git. În mod implicit, Weblate face clone superficiale ale depozitelor pentru a face clonarea mai rapidă și pentru a economisi spațiu pe disc. În funcție de utilizarea dumneavoastră (de exemplu, atunci când folosiți Extensii personalizate), este posibil să doriți să măriți adâncimea sau să dezactivați complet clonele superficiale prin setarea acestei valori la 0.

Sugestie

În cazul în care primiți o eroare fatal: eroare de protocol: expected old/new/ref, got 'shallow <commit hash>' atunci când împingeți de pe Weblate, dezactivați complet clonele superficiale prin setarea:

VCS_CLONE_DEPTH = 0

WEBLATE_ADDONS

Lista de addon-uri disponibile pentru utilizare. Pentru a le utiliza, acestea trebuie să fie activate pentru o anumită componentă de traducere. În mod implicit, aceasta include toate addon-urile încorporate; atunci când extindeți lista, probabil că veți dori să le păstrați activate pe cele existente, de exemplu:

WEBLATE_ADDONS = (
    # Built-in addons
    "weblate.addons.gettext.GenerateMoAddon",
    "weblate.addons.gettext.UpdateLinguasAddon",
    "weblate.addons.gettext.UpdateConfigureAddon",
    "weblate.addons.gettext.MsgmergeAddon",
    "weblate.addons.gettext.GettextCustomizeAddon",
    "weblate.addons.gettext.GettextAuthorComments",
    "weblate.addons.cleanup.CleanupAddon",
    "weblate.addons.consistency.LangaugeConsistencyAddon",
    "weblate.addons.discovery.DiscoveryAddon",
    "weblate.addons.flags.SourceEditAddon",
    "weblate.addons.flags.TargetEditAddon",
    "weblate.addons.flags.SameEditAddon",
    "weblate.addons.flags.BulkEditAddon",
    "weblate.addons.generate.GenerateFileAddon",
    "weblate.addons.json.JSONCustomizeAddon",
    "weblate.addons.properties.PropertiesSortAddon",
    "weblate.addons.git.GitSquashAddon",
    "weblate.addons.removal.RemoveComments",
    "weblate.addons.removal.RemoveSuggestions",
    "weblate.addons.resx.ResxUpdateAddon",
    "weblate.addons.autotranslate.AutoTranslateAddon",
    "weblate.addons.yaml.YAMLCustomizeAddon",
    "weblate.addons.cdn.CDNJSAddon",
    # Add-on you want to include
    "weblate.addons.example.ExampleAddon",
)

Notă

Îndepărtarea addonului din listă nu îl dezinstalează din componente. În acest caz, Weblate se va bloca. Vă rugăm să dezinstalați addon-ul din toate componentele înainte de a-l elimina din această listă.

WEBLATE_EXPORTATORI

Nou în versiunea 4.2.

Lista exportatorilor disponibili care oferă posibilitatea de a descărca traduceri sau glosare în diferite formate de fișiere.

WEBLATE_FORMATE

Nou în versiunea 3.0.

Lista de formate de fișiere disponibile pentru utilizare.

Notă

Lista implicită conține deja formatele comune.

WEBLATE_GPG_IDENTITATE

Nou în versiunea 3.1.

Identitate utilizată de Weblate pentru a semna angajamentele Git, de exemplu:

WEBLATE_GPG_IDENTITY = "Weblate <weblate@example.com>"

Se caută în brelocul de chei Weblate GPG o cheie corespunzătoare (home/.gnupg în DATA_DIR). Dacă nu este găsită, se generează o cheie, vă rugăm să verificați Semnarea comenzilor Git cu GnuPG pentru mai multe detalii.

SITE WEB_NECESAR

Definește dacă Website-ul proiectului trebuie să fie specificat la crearea unui proiect. Este activată în mod implicit, deoarece se potrivește cu configurațiile pentru serverele publice.

Exemplu de configurare

Următorul exemplu este livrat ca weblate/settings_example.py cu Weblate:

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#


import os
import platform
from logging.handlers import SysLogHandler

# Title of site to use
SITE_TITLE = "Weblate"

# Site domain
SITE_DOMAIN = ""

# Whether site uses https
ENABLE_HTTPS = False

#
# Django settings for Weblate project.
#

DEBUG = True

ADMINS = (
    # ("Your Name", "your_email@example.com"),
)

MANAGERS = ADMINS

DATABASES = {
    "default": {
        # Use "postgresql" or "mysql".
        "ENGINE": "django.db.backends.postgresql",
        # Database name.
        "NAME": "weblate",
        # Database user.
        "USER": "weblate",
        # Name of role to alter to set parameters in PostgreSQL,
        # use in case role name is different than user used for authentication.
        # "ALTER_ROLE": "weblate",
        # Database password.
        "PASSWORD": "",
        # Set to empty string for localhost.
        "HOST": "127.0.0.1",
        # Set to empty string for default.
        "PORT": "",
        # Customizations for databases.
        "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'",
            # Set emoji capable charset for MySQL:
            # "charset": "utf8mb4",
            # Change connection timeout in case you get MySQL gone away error:
            # "connect_timeout": 28800,
        },
        # Persistent connections
        "CONN_MAX_AGE": 0,
    }
}

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# Data directory
DATA_DIR = os.path.join(BASE_DIR, "data")

# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# In a Windows environment this must be set to your system time zone.
TIME_ZONE = "UTC"

# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = "en-us"

LANGUAGES = (
    ("ar", "العربية"),
    ("az", "Azərbaycan"),
    ("be", "Беларуская"),
    ("be@latin", "Biełaruskaja"),
    ("bg", "Български"),
    ("br", "Brezhoneg"),
    ("ca", "Català"),
    ("cs", "Čeština"),
    ("da", "Dansk"),
    ("de", "Deutsch"),
    ("en", "English"),
    ("el", "Ελληνικά"),
    ("en-gb", "English (United Kingdom)"),
    ("es", "Español"),
    ("fi", "Suomi"),
    ("fr", "Français"),
    ("gl", "Galego"),
    ("he", "עברית"),
    ("hu", "Magyar"),
    ("hr", "Hrvatski"),
    ("id", "Indonesia"),
    ("is", "Íslenska"),
    ("it", "Italiano"),
    ("ja", "日本語"),
    ("kab", "Taqbaylit"),
    ("kk", "Қазақ тілі"),
    ("ko", "한국어"),
    ("nb", "Norsk bokmål"),
    ("nl", "Nederlands"),
    ("pl", "Polski"),
    ("pt", "Português"),
    ("pt-br", "Português brasileiro"),
    ("ro", "Română"),
    ("ru", "Русский"),
    ("sk", "Slovenčina"),
    ("sl", "Slovenščina"),
    ("sq", "Shqip"),
    ("sr", "Српски"),
    ("sr-latn", "Srpski"),
    ("sv", "Svenska"),
    ("th", "ไทย"),
    ("tr", "Türkçe"),
    ("uk", "Українська"),
    ("zh-hans", "简体字"),
    ("zh-hant", "正體字"),
)

SITE_ID = 1

# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True

# If you set this to False, Django will not use timezone-aware datetimes.
USE_TZ = True

# Type of automatic primary key, introduced in Django 3.2
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"

# URL prefix to use, please see documentation for more details
URL_PREFIX = ""

# Absolute filesystem path to the directory that will hold user-uploaded files.
MEDIA_ROOT = os.path.join(DATA_DIR, "media")

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
MEDIA_URL = f"{URL_PREFIX}/media/"

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
STATIC_ROOT = os.path.join(DATA_DIR, "static")

# URL prefix for static files.
STATIC_URL = f"{URL_PREFIX}/static/"

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
    "compressor.finders.CompressorFinder",
)

# Make this unique, and don't share it with anybody.
# You can generate it using weblate/examples/generate-secret-key
SECRET_KEY = ""

_TEMPLATE_LOADERS = [
    "django.template.loaders.filesystem.Loader",
    "django.template.loaders.app_directories.Loader",
]
if not DEBUG:
    _TEMPLATE_LOADERS = [("django.template.loaders.cached.Loader", _TEMPLATE_LOADERS)]
TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "OPTIONS": {
            "context_processors": [
                "django.contrib.auth.context_processors.auth",
                "django.template.context_processors.debug",
                "django.template.context_processors.i18n",
                "django.template.context_processors.request",
                "django.template.context_processors.csrf",
                "django.contrib.messages.context_processors.messages",
                "weblate.trans.context_processors.weblate_context",
            ],
            "loaders": _TEMPLATE_LOADERS,
        },
    }
]


# GitHub username and token for sending pull requests.
# Please see the documentation for more details.
GITHUB_USERNAME = None
GITHUB_TOKEN = None

# GitLab username and token for sending merge requests.
# Please see the documentation for more details.
GITLAB_USERNAME = None
GITLAB_TOKEN = None

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.email.EmailAuth",
    # "social_core.backends.google.GoogleOAuth2",
    # "social_core.backends.github.GithubOAuth2",
    # "social_core.backends.bitbucket.BitbucketOAuth",
    # "social_core.backends.suse.OpenSUSEOpenId",
    # "social_core.backends.ubuntu.UbuntuOpenId",
    # "social_core.backends.fedora.FedoraOpenId",
    # "social_core.backends.facebook.FacebookOAuth2",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Custom user model
AUTH_USER_MODEL = "weblate_auth.User"

# Social auth backends setup
SOCIAL_AUTH_GITHUB_KEY = ""
SOCIAL_AUTH_GITHUB_SECRET = ""
SOCIAL_AUTH_GITHUB_SCOPE = ["user:email"]

SOCIAL_AUTH_BITBUCKET_KEY = ""
SOCIAL_AUTH_BITBUCKET_SECRET = ""
SOCIAL_AUTH_BITBUCKET_VERIFIED_EMAILS_ONLY = True

SOCIAL_AUTH_FACEBOOK_KEY = ""
SOCIAL_AUTH_FACEBOOK_SECRET = ""
SOCIAL_AUTH_FACEBOOK_SCOPE = ["email", "public_profile"]
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {"fields": "id,name,email"}

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = ""
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = ""

# Social auth settings
SOCIAL_AUTH_PIPELINE = (
    "social_core.pipeline.social_auth.social_details",
    "social_core.pipeline.social_auth.social_uid",
    "social_core.pipeline.social_auth.auth_allowed",
    "social_core.pipeline.social_auth.social_user",
    "weblate.accounts.pipeline.store_params",
    "weblate.accounts.pipeline.verify_open",
    "social_core.pipeline.user.get_username",
    "weblate.accounts.pipeline.require_email",
    "social_core.pipeline.mail.mail_validation",
    "weblate.accounts.pipeline.revoke_mail_code",
    "weblate.accounts.pipeline.ensure_valid",
    "weblate.accounts.pipeline.remove_account",
    "social_core.pipeline.social_auth.associate_by_email",
    "weblate.accounts.pipeline.reauthenticate",
    "weblate.accounts.pipeline.verify_username",
    "social_core.pipeline.user.create_user",
    "social_core.pipeline.social_auth.associate_user",
    "social_core.pipeline.social_auth.load_extra_data",
    "weblate.accounts.pipeline.cleanup_next",
    "weblate.accounts.pipeline.user_full_name",
    "weblate.accounts.pipeline.store_email",
    "weblate.accounts.pipeline.notify_connect",
    "weblate.accounts.pipeline.password_reset",
)
SOCIAL_AUTH_DISCONNECT_PIPELINE = (
    "social_core.pipeline.disconnect.allowed_to_disconnect",
    "social_core.pipeline.disconnect.get_entries",
    "social_core.pipeline.disconnect.revoke_tokens",
    "weblate.accounts.pipeline.cycle_session",
    "weblate.accounts.pipeline.adjust_primary_mail",
    "weblate.accounts.pipeline.notify_disconnect",
    "social_core.pipeline.disconnect.disconnect",
    "weblate.accounts.pipeline.cleanup_next",
)

# Custom authentication strategy
SOCIAL_AUTH_STRATEGY = "weblate.accounts.strategy.WeblateStrategy"

# Raise exceptions so that we can handle them later
SOCIAL_AUTH_RAISE_EXCEPTIONS = True

SOCIAL_AUTH_EMAIL_VALIDATION_FUNCTION = "weblate.accounts.pipeline.send_validation"
SOCIAL_AUTH_EMAIL_VALIDATION_URL = f"{URL_PREFIX}/accounts/email-sent/"
SOCIAL_AUTH_LOGIN_ERROR_URL = f"{URL_PREFIX}/accounts/login/"
SOCIAL_AUTH_EMAIL_FORM_URL = f"{URL_PREFIX}/accounts/email/"
SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL = f"{URL_PREFIX}/accounts/profile/#account"
SOCIAL_AUTH_PROTECTED_USER_FIELDS = ("email",)
SOCIAL_AUTH_SLUGIFY_USERNAMES = True
SOCIAL_AUTH_SLUGIFY_FUNCTION = "weblate.accounts.pipeline.slugify_username"

# Password validation configuration
AUTH_PASSWORD_VALIDATORS = [
    {
        "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator"  # noqa: E501, pylint: disable=line-too-long
    },
    {
        "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
        "OPTIONS": {"min_length": 10},
    },
    {"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator"},
    {"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator"},
    {"NAME": "weblate.accounts.password_validation.CharsPasswordValidator"},
    {"NAME": "weblate.accounts.password_validation.PastPasswordsValidator"},
    # Optional password strength validation by django-zxcvbn-password
    # {
    #     "NAME": "zxcvbn_password.ZXCVBNValidator",
    #     "OPTIONS": {
    #         "min_score": 3,
    #         "user_attributes": ("username", "email", "full_name")
    #     }
    # },
]

# Password hashing (prefer Argon)
PASSWORD_HASHERS = [
    "django.contrib.auth.hashers.Argon2PasswordHasher",
    "django.contrib.auth.hashers.PBKDF2PasswordHasher",
    "django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher",
    "django.contrib.auth.hashers.BCryptSHA256PasswordHasher",
]

# Allow new user registrations
REGISTRATION_OPEN = True

# Shortcut for login required setting
REQUIRE_LOGIN = False

# Middleware
MIDDLEWARE = [
    "weblate.middleware.RedirectMiddleware",
    "weblate.middleware.ProxyMiddleware",
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "weblate.accounts.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
    "social_django.middleware.SocialAuthExceptionMiddleware",
    "weblate.accounts.middleware.RequireLoginMiddleware",
    "weblate.api.middleware.ThrottlingMiddleware",
    "weblate.middleware.SecurityMiddleware",
    "weblate.wladmin.middleware.ManageMiddleware",
]

ROOT_URLCONF = "weblate.urls"

# Django and Weblate apps
INSTALLED_APPS = [
    # Weblate apps on top to override Django locales and templates
    "weblate.addons",
    "weblate.auth",
    "weblate.checks",
    "weblate.formats",
    "weblate.glossary",
    "weblate.machinery",
    "weblate.trans",
    "weblate.lang",
    "weblate_language_data",
    "weblate.memory",
    "weblate.screenshots",
    "weblate.fonts",
    "weblate.accounts",
    "weblate.configuration",
    "weblate.utils",
    "weblate.vcs",
    "weblate.wladmin",
    "weblate.metrics",
    "weblate",
    # Optional: Git exporter
    "weblate.gitexport",
    # Standard Django modules
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "django.contrib.admin.apps.SimpleAdminConfig",
    "django.contrib.admindocs",
    "django.contrib.sitemaps",
    "django.contrib.humanize",
    # Third party Django modules
    "social_django",
    "crispy_forms",
    "compressor",
    "rest_framework",
    "rest_framework.authtoken",
    "django_filters",
]

# Custom exception reporter to include some details
DEFAULT_EXCEPTION_REPORTER_FILTER = "weblate.trans.debug.WeblateExceptionReporterFilter"

# Default logging of Weblate messages
# - to syslog in production (if available)
# - otherwise to console
# - you can also choose "logfile" to log into separate file
#   after configuring it below

# Detect if we can connect to syslog
HAVE_SYSLOG = False
if platform.system() != "Windows":
    try:
        handler = SysLogHandler(address="/dev/log", facility=SysLogHandler.LOG_LOCAL2)
        handler.close()
        HAVE_SYSLOG = True
    except OSError:
        HAVE_SYSLOG = False

if DEBUG or not HAVE_SYSLOG:
    DEFAULT_LOG = "console"
else:
    DEFAULT_LOG = "syslog"
DEFAULT_LOGLEVEL = "DEBUG" if DEBUG else "INFO"

# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error when DEBUG=False.
# See http://docs.djangoproject.com/en/stable/topics/logging for
# more details on how to customize your logging configuration.
LOGGING = {
    "version": 1,
    "disable_existing_loggers": True,
    "filters": {"require_debug_false": {"()": "django.utils.log.RequireDebugFalse"}},
    "formatters": {
        "syslog": {"format": "weblate[%(process)d]: %(levelname)s %(message)s"},
        "simple": {"format": "[%(asctime)s: %(levelname)s/%(process)s] %(message)s"},
        "logfile": {"format": "%(asctime)s %(levelname)s %(message)s"},
        "django.server": {
            "()": "django.utils.log.ServerFormatter",
            "format": "[%(server_time)s] %(message)s",
        },
    },
    "handlers": {
        "mail_admins": {
            "level": "ERROR",
            "filters": ["require_debug_false"],
            "class": "django.utils.log.AdminEmailHandler",
            "include_html": True,
        },
        "console": {
            "level": "DEBUG",
            "class": "logging.StreamHandler",
            "formatter": "simple",
        },
        "django.server": {
            "level": "INFO",
            "class": "logging.StreamHandler",
            "formatter": "django.server",
        },
        "syslog": {
            "level": "DEBUG",
            "class": "logging.handlers.SysLogHandler",
            "formatter": "syslog",
            "address": "/dev/log",
            "facility": SysLogHandler.LOG_LOCAL2,
        },
        # Logging to a file
        # "logfile": {
        #     "level":"DEBUG",
        #     "class":"logging.handlers.RotatingFileHandler",
        #     "filename": "/var/log/weblate/weblate.log",
        #     "maxBytes": 100000,
        #     "backupCount": 3,
        #     "formatter": "logfile",
        # },
    },
    "loggers": {
        "django.request": {
            "handlers": ["mail_admins", DEFAULT_LOG],
            "level": "ERROR",
            "propagate": True,
        },
        "django.server": {
            "handlers": ["django.server"],
            "level": "INFO",
            "propagate": False,
        },
        # Logging database queries
        # "django.db.backends": {
        #     "handlers": [DEFAULT_LOG],
        #     "level": "DEBUG",
        # },
        "weblate": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL},
        # Logging VCS operations
        "weblate.vcs": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL},
        # Python Social Auth
        "social": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL},
        # Django Authentication Using LDAP
        "django_auth_ldap": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL},
        # SAML IdP
        "djangosaml2idp": {"handlers": [DEFAULT_LOG], "level": DEFAULT_LOGLEVEL},
    },
}

# Remove syslog setup if it's not present
if not HAVE_SYSLOG:
    del LOGGING["handlers"]["syslog"]

# List of machine translations
MT_SERVICES = (
    #     "weblate.machinery.apertium.ApertiumAPYTranslation",
    #     "weblate.machinery.baidu.BaiduTranslation",
    #     "weblate.machinery.deepl.DeepLTranslation",
    #     "weblate.machinery.glosbe.GlosbeTranslation",
    #     "weblate.machinery.google.GoogleTranslation",
    #     "weblate.machinery.googlev3.GoogleV3Translation",
    #     "weblate.machinery.libretranslate.LibreTranslateTranslation",
    #     "weblate.machinery.microsoft.MicrosoftCognitiveTranslation",
    #     "weblate.machinery.microsoftterminology.MicrosoftTerminologyService",
    #     "weblate.machinery.modernmt.ModernMTTranslation",
    #     "weblate.machinery.mymemory.MyMemoryTranslation",
    #     "weblate.machinery.netease.NeteaseSightTranslation",
    #     "weblate.machinery.tmserver.AmagamaTranslation",
    #     "weblate.machinery.tmserver.TMServerTranslation",
    #     "weblate.machinery.yandex.YandexTranslation",
    #     "weblate.machinery.saptranslationhub.SAPTranslationHub",
    #     "weblate.machinery.youdao.YoudaoTranslation",
    "weblate.machinery.weblatetm.WeblateTranslation",
    "weblate.memory.machine.WeblateMemory",
)

# Machine translation API keys

# URL of the Apertium APy server
MT_APERTIUM_APY = None

# DeepL API key
MT_DEEPL_KEY = None

# LibreTranslate
MT_LIBRETRANSLATE_API_URL = None
MT_LIBRETRANSLATE_KEY = None

# Microsoft Cognitive Services Translator API, register at
# https://portal.azure.com/
MT_MICROSOFT_COGNITIVE_KEY = None
MT_MICROSOFT_REGION = None

# ModernMT
MT_MODERNMT_KEY = None

# MyMemory identification email, see
# https://mymemory.translated.net/doc/spec.php
MT_MYMEMORY_EMAIL = None

# Optional MyMemory credentials to access private translation memory
MT_MYMEMORY_USER = None
MT_MYMEMORY_KEY = None

# Google API key for Google Translate API v2
MT_GOOGLE_KEY = None

# Google Translate API3 credentials and project id
MT_GOOGLE_CREDENTIALS = None
MT_GOOGLE_PROJECT = None

# Baidu app key and secret
MT_BAIDU_ID = None
MT_BAIDU_SECRET = None

# Youdao Zhiyun app key and secret
MT_YOUDAO_ID = None
MT_YOUDAO_SECRET = None

# Netease Sight (Jianwai) app key and secret
MT_NETEASE_KEY = None
MT_NETEASE_SECRET = None

# API key for Yandex Translate API
MT_YANDEX_KEY = None

# tmserver URL
MT_TMSERVER = None

# SAP Translation Hub
MT_SAP_BASE_URL = None
MT_SAP_SANDBOX_APIKEY = None
MT_SAP_USERNAME = None
MT_SAP_PASSWORD = None
MT_SAP_USE_MT = True

# Use HTTPS when creating redirect URLs for social authentication, see
# documentation for more details:
# https://python-social-auth-docs.readthedocs.io/en/latest/configuration/settings.html#processing-redirects-and-urlopen
SOCIAL_AUTH_REDIRECT_IS_HTTPS = ENABLE_HTTPS

# Make CSRF cookie HttpOnly, see documentation for more details:
# https://docs.djangoproject.com/en/1.11/ref/settings/#csrf-cookie-httponly
CSRF_COOKIE_HTTPONLY = True
CSRF_COOKIE_SECURE = ENABLE_HTTPS
# Store CSRF token in session
CSRF_USE_SESSIONS = True
# Customize CSRF failure view
CSRF_FAILURE_VIEW = "weblate.trans.views.error.csrf_failure"
SESSION_COOKIE_SECURE = ENABLE_HTTPS
SESSION_COOKIE_HTTPONLY = True
# SSL redirect
SECURE_SSL_REDIRECT = ENABLE_HTTPS
# Sent referrrer only for same origin links
SECURE_REFERRER_POLICY = "same-origin"
# SSL redirect URL exemption list
SECURE_REDIRECT_EXEMPT = (r"healthz/$",)  # Allowing HTTP access to health check
# Session cookie age (in seconds)
SESSION_COOKIE_AGE = 1000
SESSION_COOKIE_AGE_AUTHENTICATED = 1209600
SESSION_COOKIE_SAMESITE = "Lax"
# Increase allowed upload size
DATA_UPLOAD_MAX_MEMORY_SIZE = 50000000

# Apply session coookie settings to language cookie as ewll
LANGUAGE_COOKIE_SECURE = SESSION_COOKIE_SECURE
LANGUAGE_COOKIE_HTTPONLY = SESSION_COOKIE_HTTPONLY
LANGUAGE_COOKIE_AGE = SESSION_COOKIE_AGE_AUTHENTICATED * 10
LANGUAGE_COOKIE_SAMESITE = SESSION_COOKIE_SAMESITE

# Some security headers
SECURE_BROWSER_XSS_FILTER = True
X_FRAME_OPTIONS = "DENY"
SECURE_CONTENT_TYPE_NOSNIFF = True

# Optionally enable HSTS
SECURE_HSTS_SECONDS = 31536000 if ENABLE_HTTPS else 0
SECURE_HSTS_PRELOAD = ENABLE_HTTPS
SECURE_HSTS_INCLUDE_SUBDOMAINS = ENABLE_HTTPS

# HTTPS detection behind reverse proxy
SECURE_PROXY_SSL_HEADER = None

# URL of login
LOGIN_URL = f"{URL_PREFIX}/accounts/login/"

# URL of logout
LOGOUT_URL = f"{URL_PREFIX}/accounts/logout/"

# Default location for login
LOGIN_REDIRECT_URL = f"{URL_PREFIX}/"

# Anonymous user name
ANONYMOUS_USER_NAME = "anonymous"

# Reverse proxy settings
IP_PROXY_HEADER = "HTTP_X_FORWARDED_FOR"
IP_BEHIND_REVERSE_PROXY = False
IP_PROXY_OFFSET = 0

# Sending HTML in mails
EMAIL_SEND_HTML = True

# Subject of emails includes site title
EMAIL_SUBJECT_PREFIX = f"[{SITE_TITLE}] "

# Enable remote hooks
ENABLE_HOOKS = True

# By default the length of a given translation is limited to the length of
# the source string * 10 characters. Set this option to False to allow longer
# translations (up to 10.000 characters)
LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH = True

# Use simple language codes for default language/country combinations
SIMPLIFY_LANGUAGES = True

# Render forms using bootstrap
CRISPY_TEMPLATE_PACK = "bootstrap3"

# List of quality checks
# CHECK_LIST = (
#     "weblate.checks.same.SameCheck",
#     "weblate.checks.chars.BeginNewlineCheck",
#     "weblate.checks.chars.EndNewlineCheck",
#     "weblate.checks.chars.BeginSpaceCheck",
#     "weblate.checks.chars.EndSpaceCheck",
#     "weblate.checks.chars.DoubleSpaceCheck",
#     "weblate.checks.chars.EndStopCheck",
#     "weblate.checks.chars.EndColonCheck",
#     "weblate.checks.chars.EndQuestionCheck",
#     "weblate.checks.chars.EndExclamationCheck",
#     "weblate.checks.chars.EndEllipsisCheck",
#     "weblate.checks.chars.EndSemicolonCheck",
#     "weblate.checks.chars.MaxLengthCheck",
#     "weblate.checks.chars.KashidaCheck",
#     "weblate.checks.chars.PunctuationSpacingCheck",
#     "weblate.checks.format.PythonFormatCheck",
#     "weblate.checks.format.PythonBraceFormatCheck",
#     "weblate.checks.format.PHPFormatCheck",
#     "weblate.checks.format.CFormatCheck",
#     "weblate.checks.format.PerlFormatCheck",
#     "weblate.checks.format.JavaScriptFormatCheck",
#     "weblate.checks.format.LuaFormatCheck",
#     "weblate.checks.format.ObjectPascalFormatCheck",
#     "weblate.checks.format.SchemeFormatCheck",
#     "weblate.checks.format.CSharpFormatCheck",
#     "weblate.checks.format.JavaFormatCheck",
#     "weblate.checks.format.JavaMessageFormatCheck",
#     "weblate.checks.format.PercentPlaceholdersCheck",
#     "weblate.checks.format.VueFormattingCheck",
#     "weblate.checks.format.I18NextInterpolationCheck",
#     "weblate.checks.format.ESTemplateLiteralsCheck",
#     "weblate.checks.angularjs.AngularJSInterpolationCheck",
#     "weblate.checks.icu.ICUMessageFormatCheck",
#     "weblate.checks.icu.ICUSourceCheck",
#     "weblate.checks.qt.QtFormatCheck",
#     "weblate.checks.qt.QtPluralCheck",
#     "weblate.checks.ruby.RubyFormatCheck",
#     "weblate.checks.consistency.PluralsCheck",
#     "weblate.checks.consistency.SamePluralsCheck",
#     "weblate.checks.consistency.ConsistencyCheck",
#     "weblate.checks.consistency.TranslatedCheck",
#     "weblate.checks.chars.EscapedNewlineCountingCheck",
#     "weblate.checks.chars.NewLineCountCheck",
#     "weblate.checks.markup.BBCodeCheck",
#     "weblate.checks.chars.ZeroWidthSpaceCheck",
#     "weblate.checks.render.MaxSizeCheck",
#     "weblate.checks.markup.XMLValidityCheck",
#     "weblate.checks.markup.XMLTagsCheck",
#     "weblate.checks.markup.MarkdownRefLinkCheck",
#     "weblate.checks.markup.MarkdownLinkCheck",
#     "weblate.checks.markup.MarkdownSyntaxCheck",
#     "weblate.checks.markup.URLCheck",
#     "weblate.checks.markup.SafeHTMLCheck",
#     "weblate.checks.placeholders.PlaceholderCheck",
#     "weblate.checks.placeholders.RegexCheck",
#     "weblate.checks.duplicate.DuplicateCheck",
#     "weblate.checks.source.OptionalPluralCheck",
#     "weblate.checks.source.EllipsisCheck",
#     "weblate.checks.source.MultipleFailingCheck",
#     "weblate.checks.source.LongUntranslatedCheck",
#     "weblate.checks.format.MultipleUnnamedFormatsCheck",
#     "weblate.checks.glossary.GlossaryCheck",
# )

# List of automatic fixups
# AUTOFIX_LIST = (
#     "weblate.trans.autofixes.whitespace.SameBookendingWhitespace",
#     "weblate.trans.autofixes.chars.ReplaceTrailingDotsWithEllipsis",
#     "weblate.trans.autofixes.chars.RemoveZeroSpace",
#     "weblate.trans.autofixes.chars.RemoveControlChars",
# )

# List of enabled addons
# WEBLATE_ADDONS = (
#     "weblate.addons.gettext.GenerateMoAddon",
#     "weblate.addons.gettext.UpdateLinguasAddon",
#     "weblate.addons.gettext.UpdateConfigureAddon",
#     "weblate.addons.gettext.MsgmergeAddon",
#     "weblate.addons.gettext.GettextCustomizeAddon",
#     "weblate.addons.gettext.GettextAuthorComments",
#     "weblate.addons.cleanup.CleanupAddon",
#     "weblate.addons.cleanup.RemoveBlankAddon",
#     "weblate.addons.consistency.LangaugeConsistencyAddon",
#     "weblate.addons.discovery.DiscoveryAddon",
#     "weblate.addons.autotranslate.AutoTranslateAddon",
#     "weblate.addons.flags.SourceEditAddon",
#     "weblate.addons.flags.TargetEditAddon",
#     "weblate.addons.flags.SameEditAddon",
#     "weblate.addons.flags.BulkEditAddon",
#     "weblate.addons.generate.GenerateFileAddon",
#     "weblate.addons.generate.PseudolocaleAddon",
#     "weblate.addons.json.JSONCustomizeAddon",
#     "weblate.addons.properties.PropertiesSortAddon",
#     "weblate.addons.git.GitSquashAddon",
#     "weblate.addons.removal.RemoveComments",
#     "weblate.addons.removal.RemoveSuggestions",
#     "weblate.addons.resx.ResxUpdateAddon",
#     "weblate.addons.yaml.YAMLCustomizeAddon",
#     "weblate.addons.cdn.CDNJSAddon",
# )

# E-mail address that error messages come from.
SERVER_EMAIL = "noreply@example.com"

# Default email address to use for various automated correspondence from
# the site managers. Used for registration emails.
DEFAULT_FROM_EMAIL = "noreply@example.com"

# List of URLs your site is supposed to serve
ALLOWED_HOSTS = ["*"]

# Configuration for caching
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        # If redis is running on same host as Weblate, you might
        # want to use unix sockets instead:
        # "LOCATION": "unix:///var/run/redis/redis.sock?db=1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "PARSER_CLASS": "redis.connection.HiredisParser",
            # If you set password here, adjust CELERY_BROKER_URL as well
            "PASSWORD": None,
            "CONNECTION_POOL_KWARGS": {},
        },
        "KEY_PREFIX": "weblate",
    },
    "avatar": {
        "BACKEND": "django.core.cache.backends.filebased.FileBasedCache",
        "LOCATION": os.path.join(DATA_DIR, "avatar-cache"),
        "TIMEOUT": 86400,
        "OPTIONS": {"MAX_ENTRIES": 1000},
    },
}

# Store sessions in cache
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
# Store messages in session
MESSAGE_STORAGE = "django.contrib.messages.storage.session.SessionStorage"

# REST framework settings for API
REST_FRAMEWORK = {
    # Use Django's standard `django.contrib.auth` permissions,
    # or allow read-only access for unauthenticated users.
    "DEFAULT_PERMISSION_CLASSES": [
        # Require authentication for login required sites
        "rest_framework.permissions.IsAuthenticated"
        if REQUIRE_LOGIN
        else "rest_framework.permissions.IsAuthenticatedOrReadOnly"
    ],
    "DEFAULT_AUTHENTICATION_CLASSES": (
        "rest_framework.authentication.TokenAuthentication",
        "weblate.api.authentication.BearerAuthentication",
        "rest_framework.authentication.SessionAuthentication",
    ),
    "DEFAULT_THROTTLE_CLASSES": (
        "weblate.api.throttling.UserRateThrottle",
        "weblate.api.throttling.AnonRateThrottle",
    ),
    "DEFAULT_THROTTLE_RATES": {"anon": "100/day", "user": "5000/hour"},
    "DEFAULT_PAGINATION_CLASS": ("rest_framework.pagination.PageNumberPagination"),
    "PAGE_SIZE": 20,
    "VIEW_DESCRIPTION_FUNCTION": "weblate.api.views.get_view_description",
    "UNAUTHENTICATED_USER": "weblate.auth.models.get_anonymous",
}

# Fonts CDN URL
FONTS_CDN_URL = None

# Django compressor offline mode
COMPRESS_OFFLINE = False
COMPRESS_OFFLINE_CONTEXT = [
    {"fonts_cdn_url": FONTS_CDN_URL, "STATIC_URL": STATIC_URL, "LANGUAGE_BIDI": True},
    {"fonts_cdn_url": FONTS_CDN_URL, "STATIC_URL": STATIC_URL, "LANGUAGE_BIDI": False},
]

# Require login for all URLs
if REQUIRE_LOGIN:
    LOGIN_REQUIRED_URLS = (r"/(.*)$",)

# In such case you will want to include some of the exceptions
# LOGIN_REQUIRED_URLS_EXCEPTIONS = (
#    rf"{URL_PREFIX}/accounts/(.*)$",  # Required for login
#    rf"{URL_PREFIX}/admin/login/(.*)$",  # Required for admin login
#    rf"{URL_PREFIX}/static/(.*)$",  # Required for development mode
#    rf"{URL_PREFIX}/widgets/(.*)$",  # Allowing public access to widgets
#    rf"{URL_PREFIX}/data/(.*)$",  # Allowing public access to data exports
#    rf"{URL_PREFIX}/hooks/(.*)$",  # Allowing public access to notification hooks
#    rf"{URL_PREFIX}/healthz/$",  # Allowing public access to health check
#    rf"{URL_PREFIX}/api/(.*)$",  # Allowing access to API
#    rf"{URL_PREFIX}/js/i18n/$",  # JavaScript localization
#    rf"{URL_PREFIX}/contact/$",  # Optional for contact form
#    rf"{URL_PREFIX}/legal/(.*)$",  # Optional for legal app
# )

# Silence some of the Django system checks
SILENCED_SYSTEM_CHECKS = [
    # We have modified django.contrib.auth.middleware.AuthenticationMiddleware
    # as weblate.accounts.middleware.AuthenticationMiddleware
    "admin.E408"
]

# Celery worker configuration for testing
# CELERY_TASK_ALWAYS_EAGER = True
# CELERY_BROKER_URL = "memory://"
# CELERY_TASK_EAGER_PROPAGATES = True
# Celery worker configuration for production
CELERY_TASK_ALWAYS_EAGER = False
CELERY_BROKER_URL = "redis://localhost:6379"
CELERY_RESULT_BACKEND = CELERY_BROKER_URL

# Celery settings, it is not recommended to change these
CELERY_WORKER_MAX_MEMORY_PER_CHILD = 200000
CELERY_BEAT_SCHEDULE_FILENAME = os.path.join(DATA_DIR, "celery", "beat-schedule")
CELERY_TASK_ROUTES = {
    "weblate.trans.tasks.auto_translate*": {"queue": "translate"},
    "weblate.accounts.tasks.notify_*": {"queue": "notify"},
    "weblate.accounts.tasks.send_mails": {"queue": "notify"},
    "weblate.utils.tasks.settings_backup": {"queue": "backup"},
    "weblate.utils.tasks.database_backup": {"queue": "backup"},
    "weblate.wladmin.tasks.backup": {"queue": "backup"},
    "weblate.wladmin.tasks.backup_service": {"queue": "backup"},
    "weblate.memory.tasks.*": {"queue": "memory"},
}

# Enable plain database backups
DATABASE_BACKUP = "plain"

# Enable auto updating
AUTO_UPDATE = False

# PGP commits signing
WEBLATE_GPG_IDENTITY = None

# Third party services integration
MATOMO_SITE_ID = None
MATOMO_URL = None
GOOGLE_ANALYTICS_ID = None
SENTRY_DSN = None
SENTRY_ENVIRONMENT = SITE_DOMAIN
AKISMET_API_KEY = None

Comenzi de gestionare

Notă

Rularea comenzilor de management sub un utilizator diferit de cel care rulează serverul web poate avea ca rezultat obținerea unor permisiuni greșite pentru fișiere; consultați Permisiunile sistemului de fișiere pentru mai multe detalii.

Veți găsi comenzi de gestionare de bază (disponibile ca ./manage.py în sursele Django, sau ca un set extins într-un script numit weblate instalabil deasupra Weblate).

Invocarea comenzilor de gestionare

După cum am menționat anterior, invocarea depinde de modul în care ați instalat Weblate.

Dacă folosiți virtualenv pentru Weblate, puteți fie să specificați calea completă către weblate, fie să activați virtualenv-ul înainte de a-l invoca:

# Direct invocation
~/weblate-env/bin/weblate

# Activating virtualenv adds it to search path
. ~/weblate-env/bin/activate
weblate

Dacă folosiți codul sursă direct (fie dintr-un tarball, fie din Git checkout), scriptul de management este ./manage.py disponibil în sursele Weblate. Pentru a-l rula:

python ./manage.py list_versions

Dacă ați instalat Weblate folosind programul de instalare pip sau pip3, sau folosind scriptul ./setup.py, comanda weblate este instalată în calea dumneavoastră (sau în calea virtualenv), de unde o puteți folosi pentru a controla Weblate:

weblate list_versions

Pentru imaginea Docker, scriptul este instalat ca mai sus și îl puteți rula folosind docker exec:

docker exec --user weblate <container> weblate list_versions

Pentru docker-compose, procesul este similar, trebuie doar să folosiți docker-compose exec:

docker-compose exec --user weblate weblate weblate list_versions

În cazul în care aveți nevoie să-i transmiteți un fișier, puteți adăuga temporar un volum:

docker-compose exec --user weblate /tmp:/tmp weblate weblate importusers /tmp/users.json

adăugare_sugestii

weblate add_suggestions <project> <component> <language> <file>

Nou în versiunea 2.5.

Importă o traducere din fișier pentru a o utiliza ca sugestie pentru traducerea dată. Nu ia în considerare traducerile duplicate; sunt adăugate doar cele diferite.

--author USER@EXAMPLE.COM

E-mail al autorului pentru sugestii. Acest utilizator trebuie să existe înainte de import (puteți crea unul în interfața de administrare, dacă este necesar).

Exemplu:

weblate --author michal@cihar.com add_suggestions weblate application cs /tmp/suggestions-cs.po

auto_traducere

weblate auto_translate <project> <component> <language>

Nou în versiunea 2.5.

Schimbat în versiunea 4.6: A fost adăugat un parametru pentru modul de traducere.

Efectuează traducerea automată pe baza traducerilor altor componente.

--source PROJECT/COMPONENT

Specifică componenta care urmează să fie utilizată ca sursă disponibilă pentru traducere. Dacă nu este specificat, se utilizează toate componentele din proiect.

--user USERNAME

Specificați numele de utilizator listat ca autor al traducerilor. „Utilizator anonim” este utilizat dacă nu este specificat.

--overwrite

Dacă trebuie să se suprascrie traducerile existente.

--inconsistent

Dacă se suprascriu traducerile existente care sunt inconsecvente (a se vedea Inconsecvent).

--add

Adăugați automat o limbă în cazul în care o anumită traducere nu există.

--mt MT

Utilizați traducerea automată în locul altor componente ca traduceri automate.

--threshold THRESHOLD

Pragul de similaritate pentru traducerea automată, valoarea implicită este 80.

--mode MODE

Specifică modul de traducere, implicit este translate, dar pot fi folosite fuzzy sau suggest.

Exemplu:

weblate auto_translate --user nijel --inconsistent --source weblate/application weblate website cs

celery_queues

weblate celery_queues

Nou în versiunea 3.7.

Afișează lungimea cozilor de sarcini Celery.

checkgit

weblate checkgit <project|project/component>

Tipărește starea curentă a depozitului Git din back-end.

Puteți fie să definiți proiectul sau componenta care trebuie actualizată (de exemplu weblate/application), fie să utilizați --all pentru a actualiza toate componentele existente.

commitgit

weblate commitgit <project|project/component>

Transferă toate modificările posibile în așteptare în depozitul Git din spate.

Puteți fie să definiți proiectul sau componenta care trebuie actualizată (de exemplu weblate/application), fie să utilizați --all pentru a actualiza toate componentele existente.

commit_pending

weblate commit_pending <project|project/component>

Activează modificările în așteptare mai vechi de o anumită vârstă.

Puteți fie să definiți proiectul sau componenta care trebuie actualizată (de exemplu weblate/application), fie să utilizați --all pentru a actualiza toate componentele existente.

--age HOURS

Vârsta în ore pentru angajare. Dacă nu este specificată, se utilizează valoarea configurată în Configurația componentei.

Notă

Acest lucru este efectuat automat în fundal de către Weblate, astfel încât nu este nevoie de o invocare manuală, în afară de forțarea unei comenzi mai devreme decât cea specificată de Configurația componentei.

curățaretrans

weblate cleanuptrans

Curăță verificările orfane și sugestiile de traducere. În mod normal, nu este necesar să executați manual această operațiune, deoarece curățarea se face automat în fundal.

createadmin

weblate createadmin

Creează un cont admin cu o parolă aleatorie, cu excepția cazului în care aceasta este specificată.

--password PASSWORD

Furnizează o parolă pe linia de comandă, pentru a nu genera una aleatorie.

--no-password

Nu setați parola, acest lucru poate fi util cu –update.

--username USERNAME

Utilizați numele dat în loc de admin.

--email USER@EXAMPLE.COM

Specificați adresa de e-mail a administratorului.

--name

Specificați numele administratorului (vizibil).

--update

Actualizați utilizatorul existent (puteți folosi acest lucru pentru a schimba parolele).

Schimbat în versiunea 2.9: Au fost adăugați parametrii --username, --email, --name și --update.

memorie_deversare

weblate dump_memory

Nou în versiunea 2.20.

Exportați un fișier JSON care conține conținutul Weblate Translation Memory.

dumpuserdata

weblate dumpuserdata <file.json>

Aruncă datele utilizatorului într-un fișier pentru a fi utilizate ulterior de către importuserdata

Sugestie

Acest lucru este util atunci când migrați sau fuzionați instanțe Weblate.

import_demo

weblate import_demo

Nou în versiunea 4.1.

Creează un proiect demo cu componente bazate pe <https://github.com/WeblateOrg/demo>.

Acest lucru poate fi util atunci când se dezvoltă Weblate.

import_json

weblate import_json <json-file>

Nou în versiunea 2.7.

Import pe loturi de componente pe baza datelor JSON.

Structura fișierului JSON importat corespunde în mare parte obiectului component (a se vedea GET /api/components/(string:project)/(string:component)/). Trebuie să includeți câmpurile name și filemask.

--project PROJECT

Specifică locul de unde vor fi importate componentele.

--main-component COMPONENT

Utilizați depozitul VCS dat din această componentă pentru toate acestea.

--ignore

Treceți peste componentele (deja) importate.

--update

Actualizarea componentelor importate (deja).

Schimbat în versiunea 2.9: Parametrii --ignore și --update sunt acolo pentru a se ocupa de componentele deja importate.

Exemplu de fișier JSON:

[
  {
    "slug": "po",
    "name": "Gettext PO",
    "file_format": "po",
    "filemask": "po/*.po",
    "new_lang": "none"
  },
  {
    "name": "Android",
    "filemask": "android/values-*/strings.xml",
    "template": "android/values/strings.xml",
    "repo": "weblate://test/test",
    "file_format": "aresource"
  }
]

Vezi și

import_memory

import_memory

weblate import_memory <file>

Nou în versiunea 2.20.

Importă un fișier TMX sau JSON în memoria de traducere Weblate.

--language-map LANGMAP

Permite maparea limbilor din TMX în memoria de traducere Weblate. Codurile limbilor sunt cartografiate după normalizarea efectuată de obicei de Weblate.

--language-map en_US:en va importa, de exemplu, toate șirurile en_US ca fiind en.

Acest lucru poate fi util în cazul în care se întâmplă ca localitățile din fișierul TMX să nu corespundă cu cele pe care le utilizați în Weblate.

import_proiect

weblate import_project <project> <gitrepo> <branch> <filemask>

Schimbat în versiunea 3.0: Comanda import_project se bazează acum pe add-on-ul Descoperirea componentelor, ceea ce duce la unele modificări în ceea ce privește comportamentul și parametrii acceptați.

Import pe loturi de componente în proiect pe baza unei măști de fișier.

<project> numește un proiect existent, în care urmează să fie importate componentele.

<gitrepo> definește adresa URL a depozitului Git care trebuie utilizată, iar <branch> reprezintă ramura Git. Pentru a importa componente de traducere suplimentare dintr-o componentă Weblate existentă, utilizați un URL weblate://<proiect>/<component> pentru <gitrepo>.

<filemask> definește descoperirea fișierelor pentru depozit. Aceasta poate fi fie simplă, folosind caractere wildcards, fie poate folosi întreaga putere a expresiilor regulate.

Potrivirea simplă folosește ** pentru numele componentei și *` pentru limbă, de exemplu: **/*.po

Expresia regulată trebuie să conțină grupurile numite component și language. De exemplu: (?P<language>[^/]*)/(?P<component>[^-/]*)\.po

Importul se potrivește cu componentele existente pe baza fișierelor și le adaugă pe cele care nu există. Nu le modifică pe cele deja existente.

--name-template TEMPLATE

Personalizați numele unei componente utilizând sintaxa șablonului Django.

De exemplu: Documentation: {{ component }}}

--base-file-template TEMPLATE

Personalizați fișierul de bază pentru traducerile monolingve.

De exemplu: {{ component }}/res/values/string.xml

--new-base-template TEMPLATE

Personalizați fișierul de bază pentru adăugarea de noi traduceri.

De exemplu: {{ component }}/ts/en.ts`

--file-format FORMAT

De asemenea, puteți specifica formatul de fișier care urmează să fie utilizat (a se vedea Formate de fișiere acceptate); în mod implicit, este vorba de autodetecția.

--language-regex REGEX

Cu acest parametru puteți specifica filtrarea limbii (a se vedea Configurația componentei). Acesta trebuie să fie o expresie regulată validă.

--main-component

Puteți specifica ce componentă va fi aleasă ca principală - cea care conține de fapt depozitul VCS.

--license NAME

Specificați licența de traducere globală, de proiect sau de componentă.

--license-url URL

Precizați adresa URL la care trebuie găsită licența de traducere.

--vcs NAME

În cazul în care trebuie să specificați ce sistem de control al versiunilor trebuie să utilizați, o puteți face aici. Sistemul implicit de control al versiunilor este Git.

Pentru a vă oferi câteva exemple, să încercăm să importăm două proiecte.

În primul rând traducerile Manualului Debian, unde fiecare limbă are un dosar separat cu traducerile fiecărui capitol:

weblate import_project \
    debian-handbook \
    git://anonscm.debian.org/debian-handbook/debian-handbook.git \
    squeeze/master \
    '*/**.po'

Apoi, instrumentul Tanaguru, unde trebuie specificat formatul fișierului, împreună cu șablonul fișierului de bază și modul în care toate componentele și traducerile sunt localizate într-un singur dosar:

weblate import_project \
    --file-format=properties \
    --base-file-template=web-app/tgol-web-app/src/main/resources/i18n/%s-I18N.properties \
    tanaguru \
    https://github.com/Tanaguru/Tanaguru \
    master \
    web-app/tgol-web-app/src/main/resources/i18n/**-I18N_*.properties

Exemplu mai complex de analiză a numelor de fișiere pentru a obține componenta și limba corectă dintr-un nume de fișier de tipul src/security/Numerous_security_holes_in_0.10.1.de.po:

weblate import_project \
    tails \
    git://git.tails.boum.org/tails master \
    'wiki/src/security/(?P<component>.*)\.(?P<language>[^.]*)\.po$'

Filtrarea numai a traducerilor într-o limbă aleasă:

./manage import_project \
    --language-regex '^(cs|sk)$' \
    weblate \
    https://github.com/WeblateOrg/weblate.git \
    'weblate/locale/*/LC_MESSAGES/**.po'

Importul documentației Sphinx împărțite în mai multe fișiere:

$ weblate import_project --name-template 'Documentation: %s' \
    --file-format po \
    project https://github.com/project/docs.git master \
    'docs/locale/*/LC_MESSAGES/**.po'

Importul documentației Sphinx împărțite în mai multe fișiere și directoare:

$ weblate import_project --name-template 'Directory 1: %s' \
    --file-format po \
    project https://github.com/project/docs.git master \
    'docs/locale/*/LC_MESSAGES/dir1/**.po'
$ weblate import_project --name-template 'Directory 2: %s' \
    --file-format po \
    project https://github.com/project/docs.git master \
    'docs/locale/*/LC_MESSAGES/dir2/**.po'

Vezi și

Exemple mai detaliate pot fi găsite în capitolul Începând cu internaționalizarea; alternativ, ați putea folosi import_json.

importădateutilizator

weblate importuserdata <file.json>

Importă datele utilizatorului dintr-un fișier creat de dumpuserdata

importutilizatori

weblate importusers --check <file.json>

Importă utilizatorii din fișierul JSON al bazei de date Django auth_users.

--check

Cu această opțiune se va verifica doar dacă un anumit fișier poate fi importat și va raporta eventualele conflicte care apar din cauza numelor de utilizator sau a e-mailurilor.

Puteți descărca utilizatorii din instalația Django existentă folosind:

weblate dumpdata auth.User > users.json

instalați_addon

Nou în versiunea 3.2.

weblate install_addon --addon ADDON <project|project/component>

Instalează un add-on la un set de componente.

--addon ADDON

Numele add-on-ului care urmează să fie instalat. De exemplu weblate.gettext.customize.

--configuration CONFIG

Configurația codificată JSON a unui add-on.

--update

Actualizați configurația add-on-ului existent.

Puteți fie să definiți în ce proiect sau componentă să instalați add-on-ul (de exemplu weblate/application), fie să utilizați --all pentru a include toate componentele existente.

Pentru a instala Personalizați ieșirea gettext pentru toate componentele:

weblate install_addon --addon weblate.gettext.customize --config '{"width": -1}' --update --all

Vezi și

Extensii

listă_limbi

weblate list_languages <locale>

Listează limbile acceptate în marcajul MediaWiki - coduri de limbă, nume în engleză și nume localizate.

Acesta este utilizat pentru a genera <https://wiki.l10n.cz/Slovn%C3%ADk_s_n%C3%A1zvy_jazyk%C5%AF>.

listă_traducători

weblate list_translators <project|project/component>

Listează traducătorii în funcție de limba la care au contribuit pentru proiectul dat:

[French]
Jean Dupont <jean.dupont@example.com>
[English]
John Doe <jd@example.com>
--language-code

Listează numele după codul limbii în loc de numele limbii.

Puteți fie să definiți ce proiect sau componentă să utilizați (de exemplu weblate/application), fie să utilizați --all pentru a lista traducătorii din toate componentele existente.

listă_versiuni

weblate list_versions

Listează toate dependențele Weblate și versiunile acestora.

loadpo

weblate loadpo <project|project/component>

Reîncarcă traducerile de pe disc (de exemplu, în cazul în care ați făcut unele actualizări în depozitul VCS).

--force

Forțați actualizarea, chiar dacă fișierele ar trebui să fie actualizate.

--lang LANGUAGE

Limitați procesarea la o singură limbă.

Puteți fie să definiți proiectul sau componenta care trebuie actualizată (de exemplu weblate/application), fie să utilizați --all pentru a actualiza toate componentele existente.

Notă

Rareori este nevoie să apelați acest lucru, Weblate va încărca automat fișierele modificate la fiecare actualizare VCS. Acest lucru este necesar în cazul în care ați modificat manual un depozit VCS subiacent Weblate sau în unele cazuri speciale în urma unei actualizări.

blocare_traducere

weblate lock_translation <project|project/component>

Împiedică continuarea traducerii unei componente.

Sugestie

Utile în cazul în care doriți să efectuați lucrări de întreținere la depozitul de bază.

Puteți fie să definiți proiectul sau componenta care trebuie actualizată (de exemplu weblate/application), fie să utilizați --all pentru a actualiza toate componentele existente.

mutați_limbă

weblate move_language source target

Nou în versiunea 3.0.

Vă permite să fuzionați conținutul lingvistic. Acest lucru este util atunci când se actualizează la o nouă versiune care conține pseudonime pentru limbi necunoscute anterior care au fost create cu sufixul (generat). Aceasta mută tot conținutul din limba sursă în cea țintă.

Exemplu:

weblate move_language cze cs

După mutarea conținutului, ar trebui să verificați dacă a mai rămas ceva (acest lucru este supus condițiilor de cursă atunci când cineva actualizează între timp depozitul) și să eliminați limbajul (generat).

pushgit

weblate pushgit <project|project/component>

Împinge modificările acceptate în depozitul VCS din amonte.

--force-commit

Forțează confirmarea tuturor modificărilor în așteptare, înainte de a le împinge.

Puteți fie să definiți proiectul sau componenta care trebuie actualizată (de exemplu weblate/application), fie să utilizați --all pentru a actualiza toate componentele existente.

Notă

Weblate împinge automat modificările dacă Împingeți pe comitere din Configurația componentei este activat, ceea ce este implicit.

deblocare_traducere

weblate unlock_translation <project|project/component>

Deblochează o anumită componentă, făcând-o disponibilă pentru traducere.

Sugestie

Utile în cazul în care doriți să efectuați lucrări de întreținere la depozitul de bază.

Puteți fie să definiți proiectul sau componenta care trebuie actualizată (de exemplu weblate/application), fie să utilizați --all pentru a actualiza toate componentele existente.

Vezi și

lock_translation

setupgrupuri

weblate setupgroups

Configurează grupurile implicite și, opțional, atribuie toți utilizatorii grupului implicit respectiv.

--no-privs-update

Dezactivează actualizarea automată a grupurilor existente (adaugă doar grupuri noi).

--no-projects-update

Împiedică actualizările automate ale grupurilor pentru proiectele existente. Aceasta permite adăugarea de grupuri nou adăugate la proiectele existente, a se vedea Control acces proiect.

configurarelimbă

weblate setuplang

Actualizează lista de limbi definite în Weblate.

--no-update

Dezactivează actualizările automate ale limbilor existente (adaugă doar cele noi).

controaledeactualizare

weblate updatechecks <project|project/component>

Actualizează toate verificările pentru toate șirurile de caractere.

Sugestie

Utile pentru actualizările care aduc modificări majore la verificări.

Puteți fie să definiți proiectul sau componenta care trebuie actualizată (de exemplu weblate/application), fie să utilizați --all pentru a actualiza toate componentele existente.

updategit

weblate updategit <project|project/component>

Preia depozitele VCS de la distanță și actualizează memoria cache internă.

Puteți fie să definiți proiectul sau componenta care trebuie actualizată (de exemplu weblate/application), fie să utilizați --all pentru a actualiza toate componentele existente.

Notă

De obicei, este mai bine să configurați cârligele din depozit pentru a declanșa Cârlige de notificare, în loc de interogarea obișnuită de către updategit.

Anunțuri

Schimbat în versiunea 4.0: În versiunile anterioare, această funcție se numea mesaje de tablă albă.

Furnizați informații traducătorilor dvs. prin postarea de anunțuri, la nivelul întregului site, pentru fiecare proiect, componentă sau limbă.

Anunțați scopul, termenele limită, statutul sau specificați obiectivele pentru traducere.

Utilizatorii vor primi notificări cu privire la anunțurile privind proiectele urmărite (cu excepția cazului în care renunță).

Acest lucru poate fi util pentru diverse lucruri, de la anunțarea scopului site-ului până la specificarea țintelor pentru traduceri.

Anunțurile pot fi postate pe fiecare nivel în meniul Manage, folosind Post announcement:

Imagine care arată un mesaj care spune: "Traducerile vor fi utilizate numai dacă ating 60%" în partea de sus a tabloului de bord.

Acesta poate fi adăugat și prin intermediul interfeței de administrare:

_images/announcement.png

Anunțurile sunt apoi afișate în funcție de contextul specificat:

Niciun context specificat

Afișat pe tabloul de bord (pagina de destinație).

Proiect specificat

Afișat în cadrul proiectului, inclusiv toate componentele și traducerile acestuia.

Componenta specificată

Afișat pentru o anumită componentă și pentru toate traducerile acesteia.

Limba specificată

Afișat în prezentarea generală a limbii și a tuturor traducerilor în limba respectivă.

Iată cum arată pe pagina de prezentare generală a limbilor:

Imagine care arată un mesaj care spune: " Traducătorii cehi sunt cei mai tari!" în partea de sus a listei de limbă cehă.

Liste de componente

Specificați mai multe liste de componente care să apară ca opțiuni pe tabloul de bord al utilizatorului, din care utilizatorii pot alege una ca vizualizare implicită. Consultați Tabloul de bord pentru a afla mai multe.

Schimbat în versiunea 2.20: Pentru fiecare listă de componente prezentată în tabloul de bord se va prezenta o stare.

Numele și conținutul listelor de componente pot fi specificate în interfața de administrare, în secțiunea Liste de componente. Fiecare listă de componente trebuie să aibă un nume care să fie afișat utilizatorului și un slug care să o reprezinte în URL.

Schimbat în versiunea 2.13: Modificați setările tabloului de bord pentru utilizatorii anonimi din interfața de administrare, modificând ce tablou de bord este prezentat utilizatorilor neautentificați.

Liste automate de componente

Nou în versiunea 2.13.

Adăugați componentele în listă în mod automat pe baza slug-ului lor prin crearea de reguli Automatic component list assignment.

  • Utile pentru menținerea listelor de componente pentru instalații mari sau în cazul în care doriți să aveți o singură listă de componente cu toate componentele din instalația dumneavoastră Weblate.

Sugestie

Faceți o listă de componente care să conțină toate componentele instalației Weblate.

1. Define Automatic component list assignment with ^.*$ as regular expression in both the project and the component fields, as shown on this image:

Imagine care arată panoul de administrare Weblate cu configurația de mai sus completată.

Module Weblate opționale

Mai multe module opționale sunt disponibile pentru configurația dumneavoastră.

Exportator Git

Nou în versiunea 2.10.

Vă oferă acces numai pentru citire la depozitul Git subiacent folosind HTTP(S).

Instalare

  1. Adăugați weblate.gitexport la aplicațiile instalate în settings.py:

INSTALLED_APPS += ("weblate.gitexport",)
  1. Exportați depozitele existente prin migrarea bazei de date după instalare:

weblate migrate

Utilizare

Modulul se conectează automat la Weblate și setează URL-ul depozitului exportat în Configurația componentei. Depozitele sunt accesibile sub partea /git/ a URL-ului Weblate, de exemplu https://example.org/git/weblate/main/.

Depozitele pentru proiectele disponibile public pot fi clonate fără autentificare:

git clone 'https://example.org/git/weblate/main/'

Accesul pentru a parcurge depozitele cu acces restricționat (cu Private access control <acl>` sau când REQUIRE_LOGIN este activat) necesită un token API care poate fi obținut în user profile:

git clone 'https://user:KEY@example.org/git/weblate/main/'

Sugestie

În mod implicit, membrii grupului Users și utilizatorii anonimi au acces la depozitele pentru proiectele publice prin intermediul rolurilor Access repository și Power user.

Facturare

Nou în versiunea 2.4.

Aceasta este utilizată la Hosted Weblate pentru a defini planurile de facturare, pentru a urmări facturile și limitele de utilizare.

Instalare

1. Add weblate.billing to installed apps in settings.py:

INSTALLED_APPS += ("weblate.billing",)
  1. Rulați migrarea bazei de date pentru a instala opțional structuri de baze de date suplimentare pentru modul:

weblate migrate

Utilizare

După instalare, puteți controla facturarea în interfața de administrare. Utilizatorii cu facturarea activată vor avea o nouă filă Billing în Profilul utilizatorului.

Modulul de facturare permite în plus administratorilor de proiecte să creeze noi proiecte și componente fără a fi superutilizatori (a se vedea Adăugarea de proiecte și componente de traducere). Acest lucru este posibil atunci când sunt îndeplinite următoarele condiții:

  • Facturarea este în limitele configurate (orice suprautilizare duce la blocarea creării proiectului/componentei) și plătită (dacă prețul său este diferit de zero)

  • Utilizatorul este administrator al unui proiect existent cu facturare sau utilizatorul este proprietar al facturării (aceasta din urmă este necesară la crearea unei noi facturări pentru ca utilizatorii să poată importa proiecte noi).

La crearea proiectului, utilizatorul are posibilitatea de a alege ce factură trebuie să fie facturată pentru proiect, în cazul în care are acces la mai multe dintre ele.

Avataruri

Avatarurile sunt descărcate și stocate în memoria cache pe server pentru a reduce scurgerile de informații către site-urile care le oferă în mod implicit. Suportul încorporat pentru preluarea avatarurilor de la adresele de e-mail configurate în acest scop poate fi dezactivat cu ENABLE_AVATARS.

Weblate suportă în prezent:

Protecția împotriva spam-ului

Puteți să vă protejați împotriva spamming-ului din partea utilizatorilor prin utilizarea serviciului Akismet.

  1. Instalați modulul Python akismet (acesta este deja inclus în imaginea oficială Docker).

  2. Obțineți cheia API Akismet.

  3. Stocați-o ca AKISMET_API_KEY sau WEBLATE_AKISMET_API_KEY în Docker.

Conținutul următor este trimis la Akismet pentru verificare:

  • Sugestii de la utilizatori neautentificați

  • Descrieri și link-uri pentru proiecte și componente

Notă

Acest lucru (printre altele) se bazează pe adresa IP a clientului, consultați Rularea în spatele unui proxy invers pentru configurarea corectă a acesteia.

Semnarea comenzilor Git cu GnuPG

Nou în versiunea 3.1.

Toate angajamentele pot fi semnate de cheia GnuPG a instanței Weblate.

1. Turn on WEBLATE_GPG_IDENTITY. (Weblate will generate a GnuPG key when needed and will use it to sign all translation commits.)

Această funcție necesită instalarea GnuPG 2.1 sau o versiune mai nouă.

Cheia poate fi găsită în DATA_DIR, iar cheia publică este afișată pe pagina „Despre”:

_images/about-gpg.png

2. Alternatively you can also import existing keys into Weblate, just set HOME=$DATA_DIR/home when invoking gpg.

Limitarea ratei

Schimbat în versiunea 3.2: Limitarea ratei acceptă acum o configurație mai fină.

Schimbat în versiunea 4.6: Limitarea tarifelor nu se mai aplică superutilizatorilor.

Mai multe operații din Weblate sunt limitate de tarif. Sunt permise cel mult RATELIMIT_ATTEMPTS încercări în RATELIMIT_WINDOW secunde. Utilizatorul este apoi blocat pentru RATELIMIT_LOCKOUT. Există, de asemenea, setări specifice domeniilor, de exemplu RATELIMIT_CONTACT_ATTEMPTS sau RATELIMIT_TRANSLATE_ATTEMPTS. Tabelul de mai jos este o listă completă a domeniilor disponibile.

Următoarele operațiuni fac obiectul limitării ratei:

Nume

Domeniul de aplicare

Încercări permise

Fereastra Ratelimit

Perioada de blocare

Înregistrare

REGISTRATION

5

300

600

Trimiterea unui mesaj către administratori

MESSAGE

5

300

600

Autentificarea parolei la conectare

LOGIN

5

300

600

Căutare la nivelul întregului site

SEARCH

6

60

60

Traducerea

TRANSLATE

30

60

600

Adăugarea la glosar

GLOSSARY

30

60

600

Începerea traducerii într-o limbă nouă

LANGUAGE

2

300

600

Crearea unui nou proiect

PROJECT

5

600

600

Dacă un utilizator nu reușește să se logheze AUTH_LOCK_ATTEMPTS de mai multe ori, autentificarea prin parolă va fi dezactivată pentru contul respectiv până când va fi trecut prin procesul de resetare a parolei.

Setările pot fi, de asemenea, aplicate în containerul Docker prin adăugarea prefixului WEBLATE_ la numele setării, de exemplu RATELIMIT_ATTEMPTS devine WEBLATE_RATELIMIT_ATTEMPTS.

API are setări separate de limitare a ratei, a se vedea Limitarea ratei API.

Integrarea Fedora Messaging

Fedora Messaging este un editor bazat pe AMQP pentru toate modificările care se produc în Weblate. Puteți agăța servicii suplimentare pe modificările care se produc în Weblate folosind acest lucru.

Integrarea Fedora Messaging este disponibilă ca un modul Python separat weblate-fedora-messaging. Vă rugăm să consultați <https://github.com/WeblateOrg/fedora_messaging/> pentru instrucțiuni de configurare.

Personalizarea Weblate

Extindeți și personalizați folosind Django și Python. Contribuiți la modificările dvs. în amonte, astfel încât toată lumea să poată beneficia. Acest lucru vă reduce costurile de întreținere; codul din Weblate este luat în grijă atunci când modificați interfețele interne sau refactorizați codul.

Atenționare

Nici interfețele interne, nici șabloanele nu sunt considerate o API stabilă. Vă rugăm să vă revizuiți propriile personalizări la fiecare actualizare, interfețele sau semantica acestora se pot modifica fără notificare prealabilă.

Crearea unui modul Python

Dacă nu sunteți familiarizat cu Python, ar fi bine să consultați Python pentru începători, care explică elementele de bază și indică alte tutoriale.

Pentru a scrie un cod Python personalizat (numit modul), este nevoie de un loc de stocare a acestuia, fie în calea sistemului (de obicei, ceva de genul /usr/lib/python3.7/site-packages/), fie în directorul Weblate, care este, de asemenea, adăugat la calea de căutare a interpretorului.

Mai bine, transformați-vă personalizarea într-un pachet Python propriu-zis:

  1. Creați un folder pentru pachetul dumneavoastră (vom folosi weblate_customization).

  2. În cadrul acestuia, creați un fișier setup.py pentru a descrie pachetul:

    from setuptools import setup
    
    setup(
        name="weblate_customization",
        version="0.0.1",
        author="Your name",
        author_email="yourname@example.com",
        description="Sample Custom check for Weblate.",
        license="GPLv3+",
        keywords="Weblate check example",
        packages=["weblate_customization"],
    )
    
  3. Creați un folder pentru modulul Python (numit și weblate_customization) pentru codul de personalizare.

  4. În cadrul acestuia, creați un fișier __init__.py pentru a vă asigura că Python poate importa modulul.

  5. Acest pachet poate fi instalat acum folosind pip install -e. Mai multe informații pot fi găsite în “Editable” Installs.

  6. Odată instalat, modulul poate fi utilizat în configurația Weblate (de exemplu weblate_customization.checks.FooCheck).

Structura modulului tău ar trebui să arate astfel:

weblate_customization
├── setup.py
└── weblate_customization
    ├── __init__.py
    ├── addons.py
    └── checks.py

Puteți găsi un exemplu de personalizare a Weblate la <https://github.com/WeblateOrg/customize-example>, care acoperă toate subiectele descrise mai jos.

Verificări de calitate personalizate, addon-uri și auto-corectări

Pentru a vă instala codul pentru Reparații automate personalizate, Întocmirea propriilor cecuri sau Add-on de scriere în Weblate:

  1. Plasați fișierele în modulul Python care conține personalizarea Weblate (a se vedea Crearea unui modul Python).

  2. Adăugați calea sa complet calificată la clasa Python în setările dedicate (WEBLATE_ADDONS, CHECK_LIST sau AUTOFIX_LIST):

# Checks
CHECK_LIST += ("weblate_customization.checks.FooCheck",)

# Autofixes
AUTOFIX_LIST += ("weblate_customization.autofix.FooFixer",)

# Add-ons
WEBLATE_ADDONS += ("weblate_customization.addons.ExamplePreAddon",)

Interfața de gestionare

Interfața de gestionare oferă setări de administrare în cadrul URL-ului /manage/. Aceasta este disponibilă pentru utilizatorii conectați cu privilegii de administrator, accesibilă cu ajutorul pictogramei cu cheie franceză din dreapta sus:

_images/support.png

Acesta include o prezentare generală de bază a Weblate-ului dumneavoastră:

Interfața de administrare Django

Atenționare

Va fi eliminat în viitor, deoarece utilizarea sa este descurajată - majoritatea funcțiilor pot fi gestionate direct în Weblate.

Aici puteți gestiona obiectele stocate în baza de date, cum ar fi utilizatorii, traducerile și alte setări:

_images/admin.png

În secțiunea Reports, puteți verifica starea site-ului dumneavoastră, îl puteți ajusta pentru producție sau puteți gestiona cheile SSH utilizate pentru a accesa Accesarea depozitelor.

Gestionați obiectele bazei de date în oricare dintre secțiuni. Cea mai interesantă este probabil Weblate translations, unde puteți gestiona proiecte traductibile, vezi Configurația proiectului și Configurația componentei.

Weblate languages conține definițiile limbilor, explicate mai detaliat în Definiții lingvistice.

Adăugarea unui proiect

Adăugarea unui proiect servește drept container pentru toate componentele. De obicei, creați un proiect pentru o singură piesă de software sau o singură carte (See Configurația proiectului for info on individual parameters):

_images/add-project.png

Componente bilingve

După ce ați adăugat un proiect, i se pot adăuga componente de traducere. (See Configurația componentei for info regarding individual parameters):

_images/add-component.png

Componente monolingve

Pentru o traducere mai ușoară a acestora, furnizați un fișier șablon care să conțină corespondența dintre ID-urile mesajelor și limba sursă respectivă (usually English). (See Configurația componentei for info regarding individual parameters):

_images/add-component-mono.png

Obținerea de asistență pentru Weblate

Weblate este un software liber cu copyleft, cu sprijinul comunității. Abonații beneficiază de asistență prioritară fără costuri suplimentare. Pachete de asistență preplătite sunt disponibile pentru toată lumea. Puteți găsi mai multe informații despre ofertele actuale de asistență la <https://weblate.org/support/>.

Integrarea sprijinului

Nou în versiunea 3.8.

Pachetele de asistență achiziționate pot fi opțional integrate în interfața ta de gestionare a abonamentelor Weblate, de unde vei găsi un link către acestea. Detaliile de bază ale instanței despre instalarea ta sunt, de asemenea, raportate înapoi la Weblate în acest mod.

_images/support.png

Datele transmise către Weblate

  • URL-ul unde este configurată instanța Weblate

  • Titlul site-ului tău

  • Versiunea Weblate pe care o executați

  • Numerele unor obiecte din baza de date Weblate (proiecte, componente, limbi, șiruri sursă și utilizatori)

  • Cheia SSH publică a instanței tale

În plus, atunci când Descoperiți Weblate este activat:

  • Lista proiectelor publice (denumire, URL și site web)

Nu se prezintă alte date.

Servicii de integrare

Sugestie

Pachetele de asistență achiziționate sunt deja activate la cumpărare și pot fi utilizate fără a fi integrate.

Descoperiți Weblate

Nou în versiunea 4.5.2.

Notă

Această funcție este în prezent în faza beta timpurie.

Descoperă Weblate este un serviciu opt-in care facilitează utilizatorilor găsirea serverelor și comunităților Weblate. Utilizatorii pot naviga prin serviciile înregistrate pe <https://weblate.org/discover/> și pot găsi acolo proiecte la care să contribuie.

Noțiuni de bază

Sugestie

Participarea la Descoperă Weblate face ca Weblate să trimită unele informații despre serverul tău, te rugăm să vezi Datele transmise către Weblate.

Pentru a vă lista serverul cu un abonament de suport activ (vezi Integrarea sprijinului) în Discover Weblate, tot ce trebuie să faceți este să activați această opțiune în panoul de administrare:

_images/support-discovery.png

Listarea serverului tău fără un abonament de asistență în Discover Weblate:

  1. Înscrieți-vă la <https://weblate.org/user/>

  2. Înregistrați serverul Weblate în baza de date de descoperire la <https://weblate.org/subscription/discovery/>

  3. Confirmați activarea serviciului în Weblate și activați lista de descoperire în pagina de gestionare Weblate utilizând butonul Enable discovery:

_images/support-discovery.png

Personalizarea listării

Puteți personaliza anunțul prin furnizarea unui text și a unei imagini (570 x 260 pixeli) la <https://weblate.org/user/>.

Începând cu internaționalizarea

Aveți un proiect și doriți să îl traduceți în mai multe limbi? Acest ghid vă va ajuta să faceți acest lucru. Sunt prezentate mai multe situații tipice, dar majoritatea exemplelor sunt generice și pot fi aplicate și la alte scenarii.

Înainte de a traduce orice software, trebuie să vă dați seama că limbile din întreaga lume sunt foarte diferite și nu trebuie să faceți nicio presupunere bazată pe experiența dumneavoastră. Pentru majoritatea limbilor, va arăta ciudat dacă încercați să concatenați o propoziție din segmente traduse. De asemenea, ar trebui să gestionați în mod corespunzător formele de plural, deoarece multe limbi au reguli complexe în acest sens, iar cadrul de internaționalizare pe care ajungeți să îl utilizați ar trebui să suporte acest lucru.

Nu în ultimul rând, uneori ar putea fi necesar să se adauge un context la șirul tradus. Imaginați-vă că un traducător ar primi șirul Sun pentru a traduce. Fără context, cei mai mulți oameni ar traduce acest cuvânt ca fiind cea mai apropiată stea a noastră, dar ar putea fi folosit de fapt ca o abreviere pentru duminică.

Alegerea cadrului de internaționalizare

Alegeți ceea ce este standard pe platforma dvs., încercați să evitați reinventarea roții prin crearea propriului cadru pentru a gestiona localizările. Weblate acceptă majoritatea cadrelor utilizate pe scară largă, consultați Formate de fișiere acceptate pentru mai multe informații (în special Capabilități ale tipurilor de traducere).

Recomandarea noastră personală pentru unele platforme este prezentată în tabelul următor. Aceasta se bazează pe experiența noastră, dar nu poate acoperi toate cazurile de utilizare, așa că luați întotdeauna în considerare mediul dumneavoastră atunci când faceți alegerea.

Platformă

Format recomandat

Android

Resurse de șiruri Android

iOS

Șiruri Apple iOS

Qt

Qt Linguist .ts

Python

GNU gettext

PHP

GNU gettext 1

C/C++

GNU gettext

C#

Fișiere de resurse .XML

Perl

GNU gettext

Ruby

Fișiere Ruby YAML

Extensii web

WebExtensiune JSON

Java

XLIFF 2

JavaScript

Fișiere JSON i18next 3

1

Suportul nativ pentru Gettext în PHP este eronat și adesea lipsește în versiunile Windows, se recomandă utilizarea bibliotecii terță parte motranslator în schimb.

2

De asemenea, puteți utiliza Proprietăți Java dacă nu este nevoie de plural.

3

De asemenea, puteți utiliza simplu Fișiere JSON dacă nu este nevoie de plural.

Fluxul de lucru mai detaliat pentru anumite formate este descris în capitolele următoare:

Vezi și

integrare, traducere-continuă

Integrarea cu Weblate

Bazele Weblate

Structura proiectului și a componentelor

În Weblate, traducerile sunt organizate în proiecte și componente. Fiecare proiect poate conține un număr de componente, iar acestea conțin traduceri în limbi individuale. Componenta corespunde unui fișier traductibil (de exemplu GNU gettext sau Resurse de șiruri Android). Proiectele au rolul de a vă ajuta să organizați componentele în seturi logice (de exemplu, pentru a grupa toate traducerile utilizate în cadrul unei aplicații).

La nivel intern, fiecare proiect are în mod implicit traduceri ale șirurilor de caractere comune propagate în alte componente din cadrul acestuia. Acest lucru ușurează povara traducerilor repetitive și în mai multe versiuni. Propagarea traducerilor poate fi dezactivată pentru fiecare Configurația componentei folosind Permiteți propagarea traducerii în cazul în care traducerile ar trebui să fie divergente.

Importarea proiectului de localizare în Weblate

Weblate a fost dezvoltat cu integrarea VCS în minte ca o caracteristică de bază, astfel încât cea mai simplă cale este de a acorda Weblate acces la depozitul dumneavoastră. Procesul de import vă va ghida prin configurarea traducerilor dvs. în componente.

Alternativ, puteți utiliza Weblate pentru a configura un depozit local care să conțină toate traducerile fără integrare.

Preluarea traducerilor actualizate din Weblate

Pentru a prelua șiruri de caractere actualizate din Weblate, puteți pur și simplu să preluați depozitul Git de bază (fie din sistemul de fișiere, fie poate fi pus la dispoziție prin Exportator Git). Înainte de aceasta, este posibil să doriți să confirmați orice modificări în așteptare (a se vedea Angajări leneșe). Puteți face acest lucru în interfața cu utilizatorul (în rubrica Repository maintenance) sau din linia de comandă folosind Client Weblate.

Acest lucru poate fi automatizat dacă acordați acces Weblate push la depozitul vostru și configurați URL de împingere a depozitului în Configurația componentei, vedeți Împingerea modificărilor din Weblate.

Alternativ, puteți utiliza Weblate’s REST API pentru a actualiza traducerile pentru a corespunde celei mai recente versiuni.

Preluarea modificărilor de la distanță în Weblate

Pentru a prelua în Weblate șirurile de caractere nou actualizate în depozitul vostru, lăsați-l să extragă din depozitul din amonte. Acest lucru poate fi realizat în interfața cu utilizatorul (în Repository maintenance) sau din linia de comandă folosind Client Weblate.

Acest lucru poate fi automatizat prin setarea unui webhook în depozitul vostru pentru a declanșa Weblate ori de câte ori există o nouă confirmare, consultați Actualizarea depozitelor pentru mai multe detalii.

Dacă nu folosiți o integrare VCS, puteți utiliza UI sau Weblate’s REST API pentru a actualiza traducerile pentru a se potrivi cu baza de cod.

Adăugarea de noi șiruri de caractere

În cazul în care fișierele de traducere sunt stocate într-un VCS împreună cu codul, cel mai probabil aveți un flux de lucru existent pentru ca dezvoltatorii să introducă noi șiruri de caractere. Orice modalitate de adăugare a șirurilor de caractere va fi preluată, dar luați în considerare utilizarea Poartă de calitate pentru șirurile sursă pentru a evita introducerea de erori.

Atunci când fișierele de traducere sunt separate de cod, există următoarele modalități de a introduce noi șiruri de caractere în Weblate.

  • Manual, folosind Adaugați un nou șir de traducere din meniul Instrumente în limba utilizată ca sursă pentru traduceri.

  • Programatic, utilizând API POST /api/translations/(string:project)/(string:component)/(string:language)/units/.

  • Prin încărcarea fișierului sursă ca Înlocuiți fișierul de traducere existent (acest lucru suprascrie șirurile existente, așa că asigurați-vă că fișierul include atât șirurile vechi, cât și cele noi) sau Adaugați șiruri noi, consultați metoda de încărcare.

Notă

Disponibilitatea de a adăuga șiruri de caractere în Weblate depinde de Gestionați șirurile de caractere.

Actualizarea fișierelor de limbă țintă

În cazul fișierelor monolingve (a se vedea Formate de fișiere acceptate), Weblate ar putea adăuga noi șiruri de traduceri care nu sunt prezente în Fișier de limbă de bază monolingvă și nici în traducerile actuale. Cu toate acestea, nu efectuează nicio curățare automată a șirurilor de caractere vechi, deoarece aceasta ar putea avea rezultate neașteptate. Dacă doriți să faceți acest lucru, vă rugăm să instalați addon-ul Curățați fișierele de traducere care se va ocupa de curățare în funcție de cerințele dumneavoastră.

De asemenea, Weblate nu va încerca în niciun fel să actualizeze fișierele bilingve, astfel încât, dacă aveți nevoie ca fișierele po să fie actualizate din pot, trebuie să o faceți dumneavoastră folosind Update source strings Metode de import sau folosind addon-ul Actualizarea fișierelor PO pentru a se potrivi cu POT (msgmerge).

Gestionarea depozitului de control al versiunilor

Weblate stochează toate traducerile în depozitul de control al versiunilor. Acesta poate fi fie conectat la unul în amonte, fie poate fi doar intern. Funcția Repository maintenance vă permite să manipulați depozitul.

Sugestie

Cu Traducere continuă, depozitul este împins automat ori de câte ori există modificări și, de obicei, nu este nevoie să se manipuleze manual cu el.

_images/component-repository.png

Sunt disponibile următoarele operațiuni:

Commit

Comută orice modificări în așteptare prezente în baza de date Weblate și nu în depozit, a se vedea Angajări leneșe.

Push

Împinge modificările în depozitul din upstream, dacă este configurat de URL de împingere a depozitului.

Update, Pull, Rebase

Actualizează depozitul Weblate cu modificările din amonte. Folosește Stil de fuziune atunci când se alege Update sau puteți alege unul diferit din meniul derulant.

Lock

Blocarea împiedică traducătorii să facă modificări

Reset de la Maintenance

Resetează orice modificări efectuate în Weblate pentru a se potrivi cu depozitul din upstream. Aceasta va elimina toate traducerile efectuate în Weblate și care nu sunt prezente în depozitul din upstream.

Curățenie de la Întreținere

Îndepărtează fișierele netrasate din depozit. Acestea ar putea fi rezultatul unor add-on-uri sau bug-uri cu comportament necorespunzător.

Sincronizare forțată de la Întreținere

Forțează scrierea tuturor șirurilor în fișierele de traducere. Folosiți această opțiune atunci când fișierele de depozit nu mai sunt sincronizate cu Weblate dintr-un anumit motiv.

Traducerea de software folosind GNU gettext

GNU gettext este unul dintre cele mai utilizate instrumente pentru internaționalizarea software-ului liber. Acesta oferă o modalitate simplă, dar flexibilă de a localiza software-ul. Are un suport excelent pentru plural, poate adăuga context suplimentar la șirul tradus și există o mulțime de instrumente construite în jurul său. Bineînțeles că are un suport excelent în Weblate (vezi GNU gettext file format description).

Notă

Dacă intenționați să îl utilizați în software proprietar, vă rugăm să consultați mai întâi licențele, deoarece s-ar putea să nu fie potrivit pentru dumneavoastră.

GNU gettext poate fi utilizat într-o varietate de limbaje (C, Python, PHP, Ruby, JavaScript și multe altele) și, de obicei, cadrele de interfață cu utilizatorul au deja un anumit suport pentru acesta. Utilizarea standard se face prin intermediul apelului de funcție gettext(), care este deseori numit _() pentru a face codul mai simplu și mai ușor de citit.

În plus, oferă apelul pgettext() pentru a oferi un context suplimentar traducătorilor și ngettext() care poate gestiona tipurile de plural definite pentru limba țintă.

Fiind un instrument răspândit pe scară largă, acesta dispune de mai multe învelișuri care îi simplifică utilizarea; în loc de invocarea manuală a gettext descrisă mai jos, poate doriți să încercați unul dintre acestea, de exemplu intltool.

Prezentare generală a fluxului de lucru

GNU gettext utilizează mai multe fișiere pentru a gestiona localizarea:

  • PACKAGE.pot conține șiruri de caractere extrase din codul sursă, de obicei folosind xgettext sau unele aplicații de nivel înalt, cum ar fi intltool.

  • LANGUAGE.po conține șiruri de caractere cu o traducere într-o singură limbă. Acesta trebuie să fie actualizat de către msgmerge odată ce PACKAGE.pot este actualizat. Puteți crea noi fișiere de limbă folosind msginit sau în Weblate.

  • LANGUAGE.mo conține o reprezentare binară a LANGUAGE.po și este utilizat la rularea aplicației. De obicei, nu este păstrat sub controlul versiunii, ci este generat în momentul compilării cu ajutorul msgfmt. În cazul în care doriți să îl aveți în controlul versiunii, îl puteți genera în Weblate utilizând addon-ul Generarea de fișiere MO.

În general, fluxul de lucru GNU gettext arată în felul următor:

digraph translations { graph [fontname = "sans-serif", fontsize=10]; node [fontname = "sans-serif", fontsize=10, shape=note, margin=0.1, height=0]; edge [fontname = "monospace", fontsize=10]; "Source code" -> "PACKAGE.pot" [label=" xgettext "]; "PACKAGE.pot" -> "LANGUAGE.po" [label=" msgmerge "]; "LANGUAGE.po" -> "LANGUAGE.mo" [label=" msgfmt "]; }

Exemplu de program

Un program simplu în C folosind gettext ar putea arăta după cum urmează:

#include <libintl.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int count = 1;
    setlocale(LC_ALL, "");
    bindtextdomain("hello", "/usr/share/locale");
    textdomain("hello");
    printf(
        ngettext(
            "Orangutan has %d banana.\n",
            "Orangutan has %d bananas.\n",
            count
        ),
        count
    );
    printf("%s\n", gettext("Thank you for using Weblate."));
    exit(0);
}

Extragerea șirurilor traductibile

Odată ce aveți un cod care utilizează apelurile gettext, puteți utiliza xgettext pentru a extrage mesajele din acesta și a le stoca într-un .pot:

$ xgettext main.c -o po/hello.pot

Notă

Există programe alternative pentru a extrage șiruri de caractere din cod, de exemplu pybabel.

Acest lucru creează un fișier șablon, pe care îl puteți folosi pentru a începe noi traduceri (folosind msginit) sau pentru a le actualiza pe cele existente după modificarea codului (pentru aceasta veți folosi msgmerge). Fișierul rezultat este pur și simplu un fișier text structurat:

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-23 11:02+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"

#: main.c:14
#, c-format
msgid "Orangutan has %d banana.\n"
msgid_plural "Orangutan has %d bananas.\n"
msgstr[0] ""
msgstr[1] ""

#: main.c:20
msgid "Thank you for using Weblate."
msgstr ""

Fiecare linie msgid definește un șir de tradus, șirul special gol de la început este antetul fișierului care conține metadate despre traducere.

Începerea unei noi traduceri

Cu șablonul instalat, putem începe prima noastră traducere:

$ msginit -i po/hello.pot -l cs --no-translator -o po/cs.po
Created cs.po.

Tocmai a fost creat cs.po și are deja câteva informații completate. Cel mai important este că a primit definiția corectă a formelor de plural pentru limba aleasă și puteți vedea că numărul de pluraluri s-a schimbat în funcție de aceasta:

# Czech translations for PACKAGE package.
# Copyright (C) 2015 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Automatically generated, 2015.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-23 11:02+0200\n"
"PO-Revision-Date: 2015-10-23 11:02+0200\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"

#: main.c:14
#, c-format
msgid "Orangutan has %d banana.\n"
msgid_plural "Orangutan has %d bananas.\n"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""

#: main.c:20
msgid "Thank you for using Weblate."
msgstr ""

Acest fișier este compilat într-o formă binară optimizată, fișierul .mo utilizat de funcțiile GNU gettext la momentul execuției.

Actualizarea șirurilor de caractere

Odată ce adăugați mai multe șiruri de caractere sau modificați unele șiruri de caractere în programul dumneavoastră, executați din nou xgettext care regenerează fișierul șablon:

$ xgettext main.c -o po/hello.pot

Apoi puteți actualiza fișierele de traducere individuale pentru a se potrivi cu șabloanele nou create (acest lucru include reordonarea șirurilor pentru a se potrivi cu noul șablon):

$ msgmerge --previous --update po/cs.po po/hello.pot

Importul în Weblate

Pentru a importa o astfel de traducere în Weblate, tot ce trebuie să definiți sunt următoarele câmpuri atunci când creați componenta (a se vedea Configurația componentei pentru o descriere detaliată a câmpurilor):

Domeniul

Valoare

Depozitul de cod sursă

URL-ul depozitului VCS cu proiectul dumneavoastră

Masca de fișier

po/*.po

Șablon pentru traduceri noi

po/hello.pot

Formatul fișierului

Alegeți gettext PO file

Limba nouă

Alegeți Crearea unui nou fișier de limbă

Și asta e tot, sunteți gata să începeți să vă traduceți software-ul!

Vezi și

Puteți găsi un exemplu de gettext cu mai multe limbi în proiectul Weblate Hello de pe GitHub: <https://github.com/WeblateOrg/hello>.

Traducerea documentației folosind Sphinx

Sphinx este un instrument pentru crearea de documentație frumoasă. Folosește o sintaxă simplă reStructuredText și poate genera rezultate în mai multe formate. Dacă sunteți în căutarea unui exemplu, această documentație este, de asemenea, construită cu ajutorul lui. Însoțitorul foarte util pentru utilizarea Sphinx este serviciul Read the Docs, care va construi și va publica documentația dumneavoastră gratuit.

Nu mă voi concentra pe scrierea documentației în sine, dacă aveți nevoie de îndrumare în acest sens, urmați instrucțiunile de pe site-ul Sphinx. Odată ce documentația este gata, traducerea ei este destul de ușoară, deoarece Sphinx vine cu suport pentru acest lucru și este destul de bine acoperit în Internationalization. Este o chestiune de câteva directive de configurare și de invocare a instrumentului sphinx-intl.

Dacă utilizați serviciul Read the Docs, puteți începe să creați documentația tradusă pe pagina Read the Docs. Documentul lor Localization of Documentation acoperă cam tot ceea ce aveți nevoie - crearea unui alt proiect, setarea limbii acestuia și crearea unei legături cu proiectul principal ca traducere.

Acum tot ce trebuie să faceți este să traduceți conținutul documentației. Sphinx generează un fișier PO pentru fiecare director sau fișier de nivel superior, ceea ce poate duce la un număr destul de mare de fișiere de tradus (în funcție de setările gettext_compact). Puteți importa fișierul index.po în Weblate ca o componentă inițială și apoi să configurați addon-ul Descoperirea componentelor pentru a descoperi automat toate celelalte.

Configurația componentei

Denumirea componentei

Documentation

Masca de fișier

docs/locales/*/LC_MESSAGES/index.po

Șablon pentru traduceri noi

docs/locales/index.pot

Formatul fișierului

gettext PO file

Steaguri de traducere

rst-text

Configurația de descoperire a componentelor

Expresie regulată pentru a potrivi fișierele de traducere cu

docs/locales/(?P<limbă>[^/.]*)/LC_MESSAGES/(?P<component>[^/]*)\.po`

Personalizați numele componentei

Documentație: {{ component|title }}

Definiți fișierul de bază pentru noile traduceri

docs/locales/{{ component }}.pot

Sugestie

Ați prefera ca Sphinx să genereze doar un singur fișier PO? Începând cu Sphinx 3.3.0, puteți realiza acest lucru folosind:

gettext_compact = "docs"

Puteți găsi mai multe proiecte de documentare care sunt traduse folosind această abordare:

Traducerea HTML și JavaScript folosind Weblate CDN

Începând cu Weblate 4.2, este posibil să exportați localizarea către un CDN folosind addon-ul CDN de localizare JavaScript.

Notă

Această funcție este configurată pe Hosted Weblate. Necesită o configurație suplimentară pe instalația dvs., consultați LOCALIZE_CDN_URL și LOCALIZE_CDN_PATH.

La instalarea în componenta dvs., acesta va împinge traducerile angajate (a se vedea Angajări leneșe) în CDN și acestea pot fi folosite în paginile dumneavoastră web pentru a le localiza.

Crearea componentei

În primul rând, trebuie să creați o componentă monolingvă care va conține șirurile de caractere, consultați Adăugarea de proiecte și componente de traducere pentru instrucțiuni generice în acest sens.

În cazul în care aveți un depozit existent pentru început (de exemplu, cel care conține fișiere HTML), creați un fișier JSON gol în depozitul pentru limba sursă (a se vedea Limba sursă), de exemplu locales/en.json. Conținutul trebuie să fie {} pentru a indica un obiect gol. Odată ce aveți acest lucru, depozitul poate fi importat în Weblate și puteți începe cu o configurație de addon.

Sugestie

În cazul în care aveți traduceri existente, le puteți plasa în fișierele JSON de limbă și acestea vor fi utilizate în Weblate.

Pentru cei care nu doresc să utilizeze un depozit existent (sau nu au unul), alegeți Start from scratch atunci când creați componenta și alegeți JSON file ca format de fișier (în acest moment puteți alege orice format monolingv).

Configurarea addonului Weblate CDN

Addon-ul CDN de localizare JavaScript oferă câteva opțiuni de configurare.

Pragul de traducere

Traducerile traduse peste acest prag vor fi incluse în CDN.

Selector CSS

Configurează ce șiruri de caractere din documentele HTML pot fi traduse, a se vedea Extragerea șirurilor pentru Weblate CDN și Localizarea HTML folosind Weblate CDN.

Numele cookie-ului de limbă

Numele modulului cookie care conține limba selectată de utilizator. Utilizat în fragmentul JavaScript pentru Localizarea HTML folosind Weblate CDN.

Extrageți șiruri de caractere din fișiere HTML

Lista fișierelor din depozit sau a URL-urilor în care Weblate va căuta șiruri de caractere traductibile și le va oferi pentru o traducere, a se vedea Extragerea șirurilor pentru Weblate CDN.

Extragerea șirurilor pentru Weblate CDN

Șirurile de traducere trebuie să fie prezente în Weblate. Puteți să le gestionați manual, să folosiți API pentru a le crea sau să listați fișiere sau URL-uri folosind Extrage șiruri de caractere din fișiere HTML și Weblate le va extrage automat. Fișierele trebuie să fie prezente în depozit sau să conțină URL-uri de la distanță care vor fi descărcate și analizate în mod regulat de Weblate.

Configurația implicită pentru CSS selector extrage elementele cu clasa CSS l10n, de exemplu, ar extrage două șiruri de caractere din următoarele fragmente:

<section class="content">
    <div class="row">
        <div class="wrap">
            <h1 class="section-title min-m l10n">Maintenance in progress</h1>
            <div class="page-desc">
                <p class="l10n">We're sorry, but this site is currently down for maintenance.</p>
            </div>
        </div>
    </div>
</section>

În cazul în care nu doriți să modificați codul existent, puteți, de asemenea, să utilizați * ca selector pentru a procesa toate elementele.

Notă

În prezent, se extrage doar textul elementelor. Acest add-on nu suportă localizarea atributelor elementelor sau a elementelor cu copii.

Localizarea HTML folosind Weblate CDN

Pentru a localiza un document HTML, trebuie să încărcați scriptul weblate.js:

<script src="https://weblate-cdn.com/a5ba5dc29f39498aa734528a54b50d0a/weblate.js" async></script>

La încărcare, aceasta va găsi automat toate elementele traductibile corespunzătoare (pe baza configurației CSS selector) și va înlocui textul acestora cu o traducere.

Limba utilizatorului este detectată din cookie-ul configurat și revine la limbile preferate de utilizator configurate în browser.

Language cookie name poate fi util pentru integrarea cu alte aplicații (de exemplu, alegeți django_language atunci când utilizați Django).

Localizarea JavaScript

Traducerile individuale sunt expuse ca fișiere JSON bilingve în cadrul CDN. Pentru a prelua una dintre ele, puteți utiliza următorul cod:

fetch(("https://weblate-cdn.com/a5ba5dc29f39498aa734528a54b50d0a/cs.json")
  .then(response => response.json())
  .then(data => console.log(data));

Logica de localizare propriu-zisă trebuie să fie implementată în acest caz.

Alerte privind componentele de traducere

Afișează erorile din configurația Weblate sau din proiectul de traducere pentru orice componentă de traducere dată. Se oferă, de asemenea, îndrumări cu privire la modul de soluționare a problemelor găsite.

În prezent, sunt acoperite următoarele:

  • Șiruri sursă duplicate în fișierele de traducere

  • Limbi duplicate în cadrul traducerilor

  • Eșecuri de fuziune, actualizare sau împingere în depozit

  • Erori de parsare în fișierele de traducere

  • Limite de facturare (a se vedea Facturare)

  • Depozitul care conține prea multe comenzi ieșite sau lipsă

  • Licențe lipsă

  • Erori la rularea add-on-ului (vezi Extensii)

  • Traducere monolingvă neconfigurată.

  • Întrerupt Configurația componentei

  • URL-uri defecte

  • Captură de ecran neutilizată

  • Cod lingvistic ambiguu

  • Baza nouă neutilizată în setările componentelor

  • Mască de fișier duplicată utilizată pentru componentele legate

Alertele sunt actualizate zilnic sau la fiecare modificare (de exemplu, când Configurația componentei se modifică sau când se actualizează depozitul).

Alertele sunt listate pe fiecare pagină a componentei respective ca Alerte. Dacă lipsește, componenta anulează toate verificările curente. Alertele nu pot fi ignorate, dar vor dispărea odată ce problema de bază a fost rezolvată.

O componentă care are atât șiruri de caractere duplicate, cât și limbi arată astfel:

_images/alerts.png

Construirea unei comunități de traducători

Lista de verificare a localizării comunitare

Nou în versiunea 3.9.

Lista de verificare a localizării comunitare, care poate fi găsită în meniul fiecărei componente, vă poate oferi îndrumări pentru a face procesul de localizare mai ușor pentru traducătorii din comunitate.

_images/guide.png

Gestionarea traducerilor

Adăugarea de noi traduceri

Șirurile de caractere noi pot fi puse la dispoziție pentru traducere atunci când apar în fișierul de bază, numit Template pentru traduceri noi (a se vedea Configurația componentei). Dacă formatul fișierului dumneavoastră nu necesită un astfel de fișier, cum este cazul majorității fluxurilor de traducere monolingve, puteți începe cu fișiere goale).

Limbile noi pot fi adăugate imediat, atunci când sunt solicitate de un utilizator în Weblate, sau o notificare va fi trimisă administratorilor de proiect pentru aprobare și adăugare manuală. Acest lucru se poate face folosind Adăugarea unei noi traduceri în Configurația componentei.

Notă

Dacă adăugați un fișier de limbă în depozitul la distanță conectat, traducerea respectivă va fi adăugată la componentă atunci când Weblate actualizează depozitul local.

Mai multe informații despre setările de actualizare a depozitului pot fi găsite pe pagina Actualizarea depozitelor.

Eliminarea traducerilor existente

Limbajele, componentele sau proiectele în care se află pot fi eliminate (șterse din Weblate și din depozitul la distanță, dacă este utilizat) din meniul ManageRemoval al fiecărui proiect, componentă sau limbaj.

Inițierea acțiunii Removal afișează lista componentelor care urmează să fie eliminate. Trebuie să introduceți slug al obiectului pentru a confirma eliminarea. slug este numele de cale al proiectului, limbii sau componentei, așa cum poate fi văzut în URL.

Dacă doriți să eliminați doar câteva șiruri de caractere specifice, există următoarele modalități:

  • Manual în fișierul sursă. Acestea vor fi eliminate și din proiectul de traducere la actualizarea depozitului Weblate.

Nou în versiunea 4.5.

  • În interfața Weblate prin intermediul butonului ToolsRemove în timpul editării șirului. Acest lucru are diferențe între formatele de fișiere, a se vedea: Gestionați șirurile de caractere

Notă

Dacă ștergeți un fișier de limbă din depozitul la distanță conectat, traducerea respectivă va fi eliminată din componentă atunci când Weblate actualizează depozitul local.

Mai multe informații despre setările de actualizare a depozitului pot fi găsite pe pagina Actualizarea depozitelor.

Variante de șiruri

Variantele sunt utile pentru a grupa mai multe șiruri de caractere, astfel încât traducătorii să poată vedea toate variantele șirului la un loc.

Sugestie

Abrevierile (forme prescurtate, contracții) sunt un bun exemplu de variante.

Variante automatizate pe bază de cheie

Nou în versiunea 3.11.

Puteți defini expresii regulate pentru a grupa șirurile de caractere pe baza cheii de traduceri monolingve din Configurația componentei:

_images/variants-settings.png

În cazul în care Key se potrivește cu expresia, partea care se potrivește este eliminată pentru a genera cheia rădăcină a variantei. Apoi, toate șirurile cu aceeași cheie rădăcină devin parte a unui singur grup de variante, incluzând și șirul cu cheia care se potrivește exact cu cheia rădăcină.

Tabelul următor prezintă câteva exemple de utilizare:

Caz de utilizare

Variantă de expresie regulată

Chei de traducere potrivite

Identificarea sufixului

(Short|Min)$

monthShort, monthMin, month, month

Identificare în linie

#[SML]

dial#S.key, dial#M.key, dial.key, dial.key

Variante manuale

Nou în versiunea 4.5.

Puteți lega manual anumite șiruri de caractere folosind steagul variant:SOURCE. Acest lucru poate fi util pentru traducerile bilingve care nu au chei pentru a grupa automat șirurile sau pentru a grupa șirurile ale căror chei nu se potrivesc, dar care ar trebui luate în considerare împreună la traducere.

Varianta suplimentară pentru un șir de caractere poate fi adăugată, de asemenea, folosind Tools în timpul traducerii (când Gestionați șirurile de caractere este activat):

_images/glossary-tools.png

Notă

În acest caz, șirul sursă al variantei trebuie să aibă cel mult 768 de caractere. Aceasta este o limitare tehnică datorată compatibilității cu baza de date MySQL.

Variante în timpul traducerii

Varianta este grupată ulterior la traducere:

_images/variants-translate.png

Șir de etichete

Împărțirea șirurilor de traducere a componentelor în categorii în funcție de text și culoare în configurația proiectului.

_images/labels.png

Sugestie

Etichetele pot fi atribuite unităților din Informații suplimentare despre șirurile sursă prin editare în bloc sau cu ajutorul addon-ului Editare în masă.

Revizuirea șirurilor de caractere

Rapoarte de activitate

Rapoartele de activitate verifică modificările de traduceri, pentru proiecte, componente sau utilizatori individuali.

Rapoartele de activitate pentru un proiect sau o componentă sunt accesibile din tabloul de bord al acestuia, în fila Info.

_images/activity.png

Mai multe rapoarte sunt accesibile în fila Insights, selectând Translation reports.

Activitatea utilizatorului conectat în acel moment poate fi văzută făcând clic pe Profil din meniul utilizatorului din dreapta sus.

Verificări ale șirurilor de surse

Există multe verificări, unele dintre ele se concentrează pe îmbunătățirea calității șirurilor sursă. Multe dintre verificările care eșuează sugerează un indiciu pentru a face șirurile sursă mai ușor de tradus. Toate tipurile de verificări eșuate ale sursei sunt afișate în fila Source a fiecărei componente.

Verificări ale șirurilor de traducere

Verificările eronate ale șirului de traducere nereușite indică faptul că problema este la nivelul șirului sursă. Traducătorii repară uneori greșelile din traducere în loc să le raporteze - un exemplu tipic este un punct final lipsă la sfârșitul unei propoziții.

Revizuirea tuturor verificărilor nereușite poate oferi un feedback valoros pentru îmbunătățirea șirurilor sale de surse. Pentru a face mai ușoară revizuirea șirurilor sursă, Weblate creează automat o traducere pentru limba sursă și vă arată verificările la nivel de sursă acolo:

_images/source-review.png

Una dintre cele mai interesante verificări de aici este Controale multiple eșuate - este declanșată ori de câte ori există un eșec în mai multe traduceri ale unui anumit șir de caractere. De obicei, acest lucru trebuie căutat, deoarece este vorba de un șir de caractere pe care traducătorii au probleme în a-l traduce corect.

Lista detaliată este o prezentare generală pentru fiecare limbă:

_images/source-review-detail.png

Recepționarea feedback-ului șirului sursă

Traducătorii pot comenta atât traducerea, cât și șirurile sursă. Fiecare Configurația componentei poate fi configurat pentru a primi astfel de comentarii la o adresă de e-mail (a se vedea Adresa de raportare a erorilor din șirul sursă), iar utilizarea listei de discuții a dezvoltatorilor este, de obicei, cea mai bună abordare. În acest fel, puteți urmări când apar probleme în traducere, să vă ocupați de ele și să le remediați rapid.

Vezi și

Comentarii

Promovarea traducerii

Weblate vă oferă widget-uri pentru a le distribui pe site-ul dvs. sau pe alte surse pentru a promova proiectul de traducere. De asemenea, are o pagină de bun venit frumoasă pentru noii contribuitori, pentru a le oferi informații de bază despre traducere. În plus, puteți partaja informații despre traducere folosind Facebook sau Twitter. Toate aceste posibilități pot fi găsite în fila Share:

_images/promote.png

Toate aceste insigne sunt însoțite de un link către o pagină simplă care explică utilizatorilor cum să traducă folosind Weblate:

_images/engage.png

Raportarea progresului traducerii

Funcțiile de raportare oferă o perspectivă asupra modului în care progresează o traducere pe o anumită perioadă. Se oferă un rezumat al contribuțiilor la o anumită componentă de-a lungul timpului. Instrumentul de raportare se găsește în meniul Insights din orice componentă de traducere, proiect sau în tabloul de bord:

_images/reporting.png

Mai multe instrumente de raportare sunt disponibile pe această pagină și toate pot produce rezultate în format HTML, reStructuredText sau JSON. Primele două formate sunt potrivite pentru încorporarea statisticilor în documentația existentă, în timp ce JSON este util pentru prelucrarea ulterioară a datelor.

Credite de traducător

Generează un document care poate fi utilizat pentru creditarea traducătorilor - sortat în funcție de limbă și enumeră toți contribuitorii la o anumită limbă:

* Czech

    * John Doe <john@example.com> (5)
    * Jane Doe <jane@example.com> (1)

* Dutch

    * Jane Doe <jane@example.com> (42)

Sugestie

Numărul din paranteză indică numărul de contribuții în perioada respectivă.

Statisticile contributorilor

Generează numărul de cuvinte și șiruri de caractere traduse în funcție de numele traducătorului:

======================================== ======================================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ========================
Name                                     Email                                    Count total              Source words total       Source chars total       Target words total       Target chars total       Count new                Source words new         Source chars new         Target words new         Target chars new         Count approved           Source words approved    Source chars approved    Target words approved    Target chars approved    Count edited             Source words edited      Source chars edited      Target words edited      Target chars edited
======================================== ======================================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ========================
John Done                                john@example.com                                                1                        3                       24                        3                       21                        1                        3                       24                        3                       21                        0                        0                        0                        0                        0                        0                        0                        0                        0                        0
Jane Done                                jane@example.com                                                2                        5                       25                        4                       28                        2                        3                       24                        3                       21                        0                        0                        0                        0                        0                        0                        0                        0                        0                        0
======================================== ======================================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ======================== ========================

Poate fi util dacă vă plătiți traducătorii pe baza volumului de muncă, vă oferă diverse statistici privind munca traducătorilor.

Toate statisticile sunt disponibile în trei variante:

Total

Numărul total de șiruri editate.

Nou

Șiruri nou traduse care nu au fost traduse înainte.

Aprobat

Numărul de aprobări de șiruri de caractere în fluxul de revizuire (a se vedea Recenzori dedicați).

Editat

Șiruri editate care au fost traduse înainte.

Pentru fiecare dintre acestea sunt disponibile următoarele măsurători:

Numărătoare

Numărul de șiruri.

Edituri

Numărul de modificări din șir, măsurat în distanța Damerau-Levenshtein.

Cuvintele sursă

Numărul de cuvinte din șirul sursă.

Caractere sursă

Numărul de caractere din șirul sursă.

Cuvintele țintă

Numărul de cuvinte din șirul tradus.

Caracterele țintă

Numărul de caractere din șirul tradus.

Contribuția la Weblate

Există zeci de modalități de a îmbunătăți Weblate. Puteți alege cel cu care vă simțiți confortabil, fie că este vorba de codare, design grafic, documentație, sponsorizare sau o idee:

Traducerea Weblate

Weblate este în permanență tradus folosind Weblate însuși. Simțiți-vă liberi să luați parte la efortul de a face Weblate disponibil în cât mai multe limbi umane. Aceasta aduce Weblate mai aproape de utilizatorii săi!

Dacă găsiți o posibilă greșeală în șirul sursă, o puteți marca cu un comentariu în editorul Weblate. În acest fel, ea poate fi discutată și corectată. Dacă sunteți sigur, puteți, de asemenea, să faceți clic pe link-ul din secțiunea Localizarea șirului sursă și să trimiteți un PR cu corecția dumneavoastră.

Contribuiți la documentația Weblate

Sunteți binevenit să îmbunătățiți pagina de documentație pe care o alegeți. Faceți-o cu ușurință făcând clic pe butonul Edit on GitHub din colțul din dreapta sus al paginii.

Vă rugăm să respectați aceste orientări atunci când scrieți:

  1. Nu eliminați o parte din documentație dacă aceasta este valabilă.

  2. Folosiți un limbaj clar și ușor de înțeles. Scrieți documente tehnice, nu o poezie. Nu toți cititorii de documente sunt vorbitori nativi, fiți atent.

  3. Nu vă fie teamă să întrebați dacă nu sunteți sigur. Dacă trebuie să întrebați despre o anumită caracteristică în timpul editării, nu modificați documentele înainte de a avea răspunsul. Aceasta înseamnă că: Modifică sau întreabă. Nu le faceți pe amândouă în același timp.

  4. Verificați modificările efectuate prin efectuarea acțiunilor descrise în timp ce urmați documentația.

  5. Trimiteți PR cu modificări în bucăți mici pentru a facilita și accelera revizuirea și fuzionarea.

  6. Dacă doriți să rescrieți și să schimbați structura unui articol mare, faceți-o în doi pași:

    1. Rescrieți

    2. După ce rescrierea este revizuită, șlefuită și îmbinată, modificați structura paragrafelor într-un alt PR.

Sugestie

Puteți traduce documentația.

Extinderea definițiilor lingvistice încorporate

Definițiile limbilor sunt în depozitul weblate-language-data <https://github.com/WeblateOrg/language-data/>`_.

Sunteți bineveniți să adăugați definițiile de limbă lipsă la languages.csv, alte fișiere sunt generate din acest fișier.

Discuții Weblate

Dacă aveți o idee și nu sunteți sigur că este potrivită pentru un număr, nu vă faceți griji. Vă puteți alătura comunității în GitHub discussions.

Finanțarea dezvoltării Weblate

Puteți stimula dezvoltarea Weblate pe donate page. Fondurile colectate acolo sunt folosite pentru a permite găzduirea gratuită a proiectelor de software liber și pentru dezvoltarea ulterioară a Weblate. Vă rugăm să verificați donate page pentru opțiuni, cum ar fi obiectivele de finanțare și recompensele pe care le primiți ca un finanțator mândru.

Susținătorii care au finanțat Weblate

Lista susținătorilor Weblate:

Vrei să fii pe listă? Vă rugăm să consultați opțiunile de pe pagina Donate to Weblate.

Începeți să contribuiți cu cod la Weblate

Înțelegeți codul sursă Weblate, parcurgând Codul sursă Weblate, Weblate front-end și Interne Weblate.

Pornind de la baza de cod

Familiarizați-vă cu baza de cod Weblate, încercând să vă familiarizați cu bug-urile etichetate ca fiind prima problemă bună.

Rularea Weblate la nivel local

Cea mai confortabilă abordare pentru a începe dezvoltarea Weblate este să urmați Instalarea din surse. Acesta vă va oferi un virtualenv cu surse Weblate editabile.

  1. Clonați codul sursă Weblate:

    git clone https://github.com/WeblateOrg/weblate.git
    cd weblate
    
  2. Creați un virtualenv:

    virtualenv .venv
    .venv/bin/activate
    
  3. Instalați Weblate (pentru aceasta aveți nevoie de unele dependențe de sistem, consultați Instalarea din surse):

    pip install -e .
    
  1. Instalați toate dependențele utile pentru dezvoltare:

    pip install -r requirements-dev.txt
    
  2. Porniți un server de dezvoltare:

    weblate runserver
    
  3. În funcție de configurația dvs., este posibil să doriți, de asemenea, să porniți Celery workers:

    ./weblate/examples/celery start
    
  4. Pentru a rula un test (a se vedea Testare locală pentru mai multe detalii):

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

Vezi și

../admin/install/sursă

Rularea Weblate la nivel local în Docker

Dacă aveți Docker și docker-compose instalate, puteți porni mediul de dezvoltare prin simpla rulare a programului:

./rundev.sh

Se va crea o imagine Docker de dezvoltare și se va porni. Weblate rulează pe <http://127.0.0.1:8080/> și vă puteți autentifica ca utilizator admin folosind admin ca parolă. Noua instalare este goală, așa că poate doriți să continuați cu Adăugarea de proiecte și componente de traducere.

Fișierul Dockerfile și docker-compose.yml pentru acest lucru se află în directorul dev-docker.

Scriptul acceptă și câțiva parametri, pentru a executa teste, rulați-l cu parametrul test și apoi specificați orice parametru test, de exemplu rularea doar a testelor din modulul weblate.machine:

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

Notă

Aveți grijă ca containerele Docker să fie funcționale înainte de a rula testele. Puteți verifica acest lucru executând comanda docker ps.

Pentru a afișa jurnalele:

./rundev.sh logs

Pentru a opri containerele din fundal, rulați:

./rundev.sh stop

Rularea scriptului fără argumente va re-crea containerul Docker și îl va reporni.

Notă

Aceasta nu este o configurație potrivită pentru producție, deoarece include mai multe hack-uri care sunt nesigure, dar care facilitează dezvoltarea.

Codarea Weblate cu PyCharm

PyCharm este un IDE cunoscut pentru Python, iată câteva linii directoare pentru a vă ajuta să vă configurați proiectul Weblate în el.

Având în vedere că tocmai ați clonat depozitul GitHub într-un folder, deschideți-l cu PyCharm. Odată ce IDE-ul este deschis, primul pas este să specificați interpretorul pe care doriți să îl utilizați:

_images/pycharm-1.png

Puteți alege fie să lăsați PyCharm să creeze un virtualenv pentru dumneavoastră, fie să selectați unul deja existent:

_images/pycharm-2.png

Nu uitați să instalați dependențele odată ce interpretul este setat: Fie prin intermediul consolei (consola din IDE va utiliza în mod implicit direct virtualenv-ul dumneavoastră), fie prin intermediul interfeței, atunci când primiți un avertisment cu privire la dependențele lipsă.

Al doilea pas este de a seta informațiile corecte pentru a utiliza Django în mod nativ în PyCharm: Ideea este de a putea declanșa imediat testele unitare în IDE. Pentru aceasta trebuie să specificați calea rădăcină a proiectului Django și calea către setările acestuia:

_images/pycharm-3.png

Aveți grijă, Django project root este rădăcina reală a depozitului, nu subdirectorul Weblate. În ceea ce privește setările, ați putea folosi fișierul weblate/settings_test.py din depozit, dar ați putea să vă creați propriile setări și să le definiți acolo.

Ultimul pas este rularea serverului și plasarea de puncte de întrerupere în cod pentru a putea depana. Acest lucru se face prin crearea unei noi configurații Django Server:

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

Sugestie

Aveți grijă la proprietatea numită No reload: Aceasta previne reîncărcarea serverului în direct dacă modificați fișiere. Acest lucru permite ca punctele de întrerupere existente în debugger să persiste, în timp ce în mod normal acestea ar fi eliminate la reîncărcarea serverului.

Inițializarea instanței voastre de dezvoltare

Este posibil să doriți să utilizați import_demo pentru a crea traduceri demo și createadmin pentru a crea un utilizator administrator.

Codul sursă Weblate

Weblate este dezvoltat pe GitHub. Sunteți bineveniți să faceți furculiță la cod și să deschideți cereri de tracțiune. Patch-urile sub orice altă formă sunt de asemenea binevenite.

Vezi și

Consultați Interne Weblate pentru a vedea cum arată Weblate din interior.

Principii de securitate prin proiectare

Orice cod pentru Weblate ar trebui să fie scris cu Security by Design Principles în minte.

Standard de codificare

Codul trebuie să respecte liniile directoare de codare PEP-8 și trebuie formatat folosind formatul de cod black.

Pentru a verifica calitatea codului, puteți utiliza flake8, plugin-urile recomandate sunt listate în .pre-commit-config.yaml, iar configurația sa este plasată în setup.cfg.

Cea mai simplă abordare pentru a pune în aplicare toate acestea este să instalați pre-commit. Depozitul Weblate conține o configurație pentru ca acesta să verifice dacă fișierele trimise sunt sănătoase. După ce îl instalați (este deja inclus în fișierul requirements-lint.txt) activați-l prin rularea pre-commit install în Weblate checkout. În acest fel, toate modificările dvs. vor fi verificate automat.

De asemenea, puteți declanșa verificarea manual, pentru a verifica toate fișierele rulate:

pre-commit run --all

Depanarea Weblate

Bugs can behave as application crashes or as various misbehavior. You are welcome to collect info on any such issue and submit it to the issue tracker.

Modul de depanare

Turning on debug mode will make the exceptions show in the web browser. This is useful to debug issues in the web interface, but not suitable for a production environment because it has performance consequences and might leak private data.

In a production environment, use ADMINS to receive e-mails containing error reports, or configure error collection using a third-party service.

Jurnalele Weblate

Weblate can produce detailed logs of what is going on in the background. In the default configuration it uses syslog and that makes the log appear either in /var/log/messages or /var/log/syslog (depending on your syslog daemon configuration).

The Celery process (see Sarcini de fundal folosind Celery) usually produces its own logs as well. The example system-wide setups logs to several files under /var/log/celery/.

Docker containers log to their output (as per usual in the Docker world), so you can look at the logs using docker-compose logs.

Vezi și

Exemplu de configurare conține configurația LOGGING.

Nu se procesează sarcinile de fundal

A lot of things are done in the background by Celery workers. If things like sending out e-mails or component removal does not work, there might a related issue.

Lucruri de verificat în acest caz:

Nu primiți e-mailuri de la Weblate

You can verify whether outgoing e-mail is working correctly by using the sendtestemail management command (see Invocarea comenzilor de gestionare for instructions on how to invoke it in different environments) or by using Interfața de gestionare under the Tools tab.

These send e-mails directly, so this verifies that your SMTP configuration is correct (see Configurarea e-mailului de ieșire). Most of the e-mails from Weblate are however sent in the background and there might be some issues with Celery involved as well, please see Nu se procesează sarcinile de fundal for debugging that.

Analiza accidentărilor aplicațiilor

In case the application crashes, it is useful to collect as much info about the crash as possible. This can be achieved by using third-party services which can collect such info automatically. You can find info on how to set this up in Colectarea rapoartelor de eroare.

Eșecuri silențioase

O mulțime de sarcini sunt transferate către Celery pentru procesare în fundal. Eșecurile nu sunt afișate în interfața cu utilizatorul, dar apar în jurnalele Celery. Configurarea Colectarea rapoartelor de eroare vă ajută să observați mai ușor astfel de eșecuri.

Probleme de performanță

In case Weblate performs badly in some scenario, please collect the relevant logs showing the issue, and anything that might help figuring out where the code might be improved.

În cazul în care unele cereri durează prea mult timp fără nicio indicație, ați putea dori să instalați dogslow împreună cu Colectarea rapoartelor de eroare și să obțineți trasee precise și detaliate în instrumentul de colectare a erorilor.

Interne Weblate

Notă

Acest capitol vă va oferi o prezentare generală de bază a componentelor interne ale Weblate.

Weblate derivă cea mai mare parte din structura codului său de la, și se bazează pe Django.

Structura directoarelor

Prezentare rapidă a structurii de directoare a depozitului principal Weblate:

docs

Codul sursă pentru această documentație, care poate fi construit folosind Sphinx.

dev-docker

Codul Docker pentru a rula serverul de dezvoltare, vezi Rularea Weblate la nivel local în Docker.

weblate

Codul sursă al Weblate ca aplicație Django, vezi Interne Weblate.

weblate/static

Fișiere client (CSS, Javascript și imagini), vezi Weblate front-end.

Module

Weblate este format din mai multe aplicații Django (unele opționale, vezi Module Weblate opționale):

accounts

Cont de utilizator, profiluri și notificări.

addons

Componente suplimentare pentru a modifica comportamentul Weblate, vezi Extensii.

api

API bazat pe Django REST framework.

auth

Autentificare și permisiuni.

billing

Modulul opțional Facturare.

checks

Șir de traducere Controale de calitate modul.

fonts

Modul de verificare a redării fonturilor.

formats

Strat de abstractizare a formatului de fișier bazat pe translate-toolkit.

gitexport

Modulul opțional Exportator Git.

lang

Modul de definire a limbajului și a modelelor de plural.

legal

Modulul opțional Legal.

machinery

Integrarea serviciilor de traducere automată.

memory

Memorie de traducere încorporată, a se vedea Memorie de traducere.

screenshots

Modul de gestionare a capturilor de ecran și modul OCR.

trans

Modulul principal care gestionează traducerile.

utils

Diverse utilități de ajutor.

vcs

Abstractizarea sistemului de control al versiunilor.

wladmin

Personalizarea interfeței de administrare Django.

Dezvoltarea de addon-uri

Extensii sunt o modalitate de a personaliza fluxul de lucru al localizării în Weblate.

class weblate.addons.base.BaseAddon(storage=None)
classmethod can_install(component, user)

Verifică dacă suplimentul este compatibil cu componenta dată.

configure(settings)

Salvați configurația.

daily(component)

Cârligul se declanșează zilnic.

classmethod get_add_form(user, component, **kwargs)

Returnează formularul de configurare pentru adăugarea unui nou add-on.

get_settings_form(user, **kwargs)

Returnează formularul de configurare pentru acest add-on.

post_add(translation)

Se declanșează după ce se adaugă o nouă traducere.

post_commit(component)

Hook declanșat după ce modificările sunt confirmate în depozit.

post_push(component)

Hook declanșat după ce depozitul este împins în amonte.

post_update(component, previous_head: str, skip_push: bool)

Hook declanșat după ce depozitul este actualizat din amonte.

Parametrii
  • previous_head (str) – HEAD al depozitului înainte de actualizare, poate fi gol la clona inițială.

  • skip_push (bool) – Dacă operațiunea de adăugare trebuie să sară peste împingerea modificărilor în amonte. De obicei, puteți trece acest lucru la metodele subiacente ca commit_and_push sau commit_pending.

pre_commit(translation, author)

Hook declanșat înainte ca modificările să fie confirmate în depozit.

pre_push(component)

Hook declanșat înainte ca depozitul să fie împins în upstream.

pre_update(component)

Hook declanșat înainte ca depozitul să fie actualizat din upstream.

save_state()

Salvați informațiile privind starea add-on-ului.

stay_on_create = False

Clasa de bază pentru add-on-urile Weblate.

store_post_load(translation, store)

Hook declanșat după ce un fișier este analizat.

Acesta primește ca argument o instanță a unei clase de format de fișier.

Acest lucru este util pentru a modifica parametrii clasei de format de fișier, de exemplu pentru a ajusta modul în care va fi salvat fișierul.

unit_pre_create(unit)

Cârlig declanșat înainte de crearea unei noi unități.

Iată un exemplu de addon:

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#


from django.utils.translation import gettext_lazy as _

from weblate.addons.base import BaseAddon
from weblate.addons.events import EVENT_PRE_COMMIT


class ExampleAddon(BaseAddon):
    # Filter for compatible components, every key is
    # matched against property of component
    compat = {"file_format": {"po", "po-mono"}}
    # List of events add-on should receive
    events = (EVENT_PRE_COMMIT,)
    # Add-on unique identifier
    name = "weblate.example.example"
    # Verbose name shown in the user interface
    verbose = _("Example add-on")
    # Detailed add-on description
    description = _("This add-on does nothing it is just an example.")

    # Callback to implement custom behavior
    def pre_commit(self, translation, author):
        return

Weblate front-end

Frontend-ul este construit în prezent folosind Bootstrap, jQuery și câteva biblioteci terțe.

Browsere acceptate

Weblate este compatibil cu cele mai recente versiuni stabile ale tuturor browserelor și platformelor majore.

Browserele alternative care utilizează cea mai recentă versiune de WebKit, Blink sau Gecko, fie direct, fie prin intermediul API-ului de vizualizare web al platformei, nu sunt acceptate în mod explicit. Cu toate acestea, Weblate ar trebui (în majoritatea cazurilor) să se afișeze și să funcționeze corect și în aceste browsere.

Este posibil ca browserele mai vechi să funcționeze, dar unele caracteristici pot fi limitate.

Gestionarea dependențelor

The yarn package manager is used to update third party libraries. The configuration lives in scripts/yarn and there is a wrapper script scripts/yarn-update to upgrade the libraries, build them and copy to correct locations in weblate/static/vendor, where all third partly frontend code is located. The Weblate specific code should be placed directly in weblate/static or feature specific subdirectories (for example weblate/static/editor).

Adăugarea unei noi biblioteci terțe constă, de obicei, în:

# Add a yarn package
yarn --cwd scripts/yarn add PACKAGE
# Edit the script to copy package to the static folder
edit scripts/yarn-update
# Run the update script
./scripts/yarn-update
# Add files to git
git add .

Stil de codificare

Weblate se bazează pe Prettier pentru formatarea codului atât pentru fișierele JavaScript, cât și pentru cele CSS.

De asemenea, folosim ESLint pentru a verifica codul JavaScript.

Localizare

În cazul în care aveți nevoie de text vizibil pentru utilizator în codul front-end, acesta trebuie să fie localizabil. În cele mai multe cazuri, tot ceea ce aveți nevoie este să înfășurați textul în interiorul funcției gettext, dar sunt disponibile funcții mai complexe:

document.write(gettext('this is to be translated'));

var object_count = 1 // or 0, or 2, or 3, ...
s = ngettext('literal for the singular case',
        'literal for the plural case', object_count);

fmts = ngettext('There is %s object. Remaining: %s',
        'There are %s objects. Remaining: %s', 11);
s = interpolate(fmts, [11, 20]);
// s is 'There are 11 objects. Remaining: 20'

Vezi și

Subiectul traducerii în documentația Django <django:topics/i18n/translation>`

Pictograme

Weblate folosește în prezent pictograme de design material. În cazul în care căutați un nou simbol, consultați Material Design Icons sau Material Design Resources.

În plus, există scripts/optimize-svg pentru a reduce dimensiunea SVG, deoarece majoritatea pictogramelor sunt încorporate în HTML pentru a permite stilizarea căilor de acces.

Raportarea problemelor în Weblate

Weblate issue tracker este găzduit pe GitHub.

Simțiți-vă binevenit să raportați orice problemă pe care o aveți sau să sugerați îmbunătățiri pentru Weblate. Există diverse șabloane pregătite pentru a vă ghida în mod confortabil prin raportarea problemelor.

Dacă ceea ce ați găsit este o problemă de securitate în Weblate, vă rugăm să consultați secțiunea Probleme de securitate de mai jos.

Dacă nu sunteți sigur cu privire la raportul dvs. de eroare sau la cererea de caracteristici, puteți încerca Discuții Weblate.

Probleme de securitate

Pentru a da timp comunității să reacționeze și să facă upgrade, vă recomandăm insistent să raportați toate problemele de securitate în mod privat. HackerOne este folosit pentru a gestiona problemele de securitate și pot fi raportate direct la HackerOne. Odată ce ați trimis-o acolo, comunitatea are timp limitat, dar suficient pentru a rezolva incidentul.

Alternativ, raportați la security@weblate.org, care ajunge, de asemenea, pe HackerOne.

Dacă nu doriți să folosiți HackerOne, indiferent de motiv, puteți trimite raportul prin e-mail la michal@cihar.com. Puteți alege să îl criptați folosind această cheie PGP 3CB 1DF1 EF12 CF2A C0EE 5A32 9C27 B313 42B7 511D. De asemenea, puteți obține cheia PGP de la Keybase.

Notă

Weblate depinde de componente terțe pentru multe lucruri. În cazul în care găsiți o vulnerabilitate care afectează una dintre aceste componente în general, vă rugăm să o raportați direct la proiectul respectiv.

Unele dintre acestea sunt:

Weblate testsuite și integrare continuă

Există seturi de teste pentru cea mai mare parte a codului actual, creșteți acoperirea prin adăugarea de cazuri de testare pentru orice nouă funcționalitate și verificați dacă aceasta funcționează.

Integrare continuă

Rezultatele actuale ale testelor pot fi găsite pe GitHub Actions, iar acoperirea este raportată pe Codecov.

Există mai multe locuri de muncă pentru a verifica diferite aspecte:

  • Teste unitare

  • Construirea documentației și legături externe

  • Testarea migrării de la toate versiunile suportate

  • Linting de cod

  • Verificarea configurării (se asigură că fișierele dist generate nu ratează nimic și pot fi testate)

Configurația pentru CI se află în directorul .github/workflows. Acesta utilizează în mare măsură scripturile de ajutor stocate în directorul ci. Scripturile pot fi, de asemenea, executate manual, dar necesită mai multe variabile de mediu, care definesc în principal fișierul de setări Django care urmează să fie utilizat și conexiunea la baza de date. Exemplul de definire a acestora se află în scripts/test-database:

# Simple way to configure test database from environment

# Database backend to use postgresql / mysql / mariadb
export CI_DATABASE=${1:-postgresql}

# Database server configuration
export CI_DB_USER=weblate
export CI_DB_PASSWORD=weblate
export CI_DB_HOST=127.0.0.1

# Django settings module to use
export DJANGO_SETTINGS_MODULE=weblate.settings_test

Execuția simplă poate arăta astfel:

. scripts/test-database
./ci/run-migrate
./ci/run-test
./ci/run-docs

Testare locală

Pentru a rula o suită de teste la nivel local, utilizați:

DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test

Sugestie

Veți avea nevoie de un server de baze de date (PostgreSQL) care să fie utilizat pentru teste. În mod implicit, Django creează o bază de date separată pentru a rula testele cu prefixul test_, astfel încât, în cazul în care setările dvs. sunt configurate pentru a utiliza weblate, testele vor utiliza baza de date test_weblate. Consultați Configurarea bazei de date pentru Weblate pentru instrucțiuni de configurare.

Fișierul weblate/settings_test.py este utilizat și în mediul CI (a se vedea Integrare continuă) și poate fi reglat cu ajutorul variabilelor de mediu:

# Simple way to configure test database from environment

# Database backend to use postgresql / mysql / mariadb
export CI_DATABASE=${1:-postgresql}

# Database server configuration
export CI_DB_USER=weblate
export CI_DB_PASSWORD=weblate
export CI_DB_HOST=127.0.0.1

# Django settings module to use
export DJANGO_SETTINGS_MODULE=weblate.settings_test

Înainte de a rula testele, ar trebui să colectați fișierele statice, deoarece unele teste se bazează pe prezența lor:

DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py collectstatic

De asemenea, puteți specifica testele individuale care urmează să fie executate:

DJANGO_SETTINGS_MODULE=weblate.settings_test ./manage.py test weblate.gitexport

Sugestie

Testele pot fi, de asemenea, executate în interiorul containerului docker al dezvoltatorului, vezi Rularea Weblate la nivel local în Docker.

Vezi și

Consultați Testing in Django pentru mai multe informații despre rularea și scrierea testelor pentru Django.

Scheme de date

Weblate utilizează JSON Schema pentru a defini aspectul fișierelor JSON externe.

Schema de memorie de traducere Weblate

https://weblate.org/schemas/weblate-memory.schema.json

tip

array

elemente

Articolul de memorie de traducere

tip

obiect

proprietăți

  • categorie

Categoria de șiruri

1 este global, 2 este partajat, 10000000+ sunt specifice proiectului, 20000000+ sunt specifice utilizatorului

tip

întreg

exemple

1

minim

0

implicit

1

  • origine

Originea șirului

Nume de fișier sau nume de componentă

tip

șir

exemple

test.tmx

proiect/componentă

implicit

  • sursă

Șirul sursă

tip

șir

exemple

Salut

minLength

1

implicit

  • sursă_limbă

Limbajul sursă

ISO 639-1 / ISO 639-2 / IETF BCP 47

tip

șir

exemple

engleză

model

^[^ ]+$

implicit

  • țintă

Sirul țintă

tip

șir

exemple

Ahoj

minLength

1

implicit

  • țintă_limbă

Limba țintă

ISO 639-1 / ISO 639-2 / IETF BCP 47

tip

șir

exemple

cs

model

^[^ ]+$

implicit

Proprietățisuplimentare

Fals

definiții

Exportul datelor de utilizator Weblate

https://weblate.org/schemas/weblate-userdata.schema.json

tip

obiect

proprietăți

  • bază

Bază

tip

obiect

proprietăți

  • nume de utilizator

Nume utilizator

tip

șir

exemple

administrator

implicit

  • ** nume_complet **

Nume complet

tip

șir

exemple

Administratorul Weblate

implicit

  • e-mail

E-mail

tip

șir

exemple

noreply@exemple.com

implicit

  • ** data _ a aderat **

Data aderării

tip

șir

exemple

2019-11-18T18:53:54.862Z

implicit

  • profil

Profil

tip

obiect

proprietăți

  • limbă

Limbă

tip

șir

exemple

cs

model

^.*$

implicit

  • sugerat

Numărul de șiruri sugerate

tip

întreg

exemple

1

implicit

0

  • traducere

Numărul de șiruri de caractere traduse

tip

întreg

exemple

24

implicit

0

  • încărcat

Numărul de capturi de ecran încărcate

tip

întreg

exemple

1

implicit

0

  • hide_complet

Ascundeți traducerile finalizate pe tabloul de bord

tip

boolean

exemple

Fals

implicit

Adevărat

  • secundar_în_zen

Afișează traducerile secundare în modul Zen

tip

boolean

exemple

Adevărat

implicit

Adevărat

  • hide_sursă_secundar

Ascundeți sursa dacă există o traducere secundară

tip

boolean

exemple

Fals

implicit

Adevărat

  • editor_link

Legătura editorului

tip

șir

exemple

model

^.*$

implicit

  • traducere_mod

Modul editor de traduceri

tip

întreg

exemple

0

implicit

0

  • zen_mod

Modul editor zen

tip

întreg

exemple

0

implicit

0

  • special_caractere

Caractere speciale

tip

șir

exemple

model

^.*$

implicit

  • dashboard_vizualizare

Vizualizare implicită a tabloului de bord

tip

întreg

exemple

1

implicit

0

  • dashboard_componență_listă

Lista de componente implicite

implicit

nul

oricareOf

tip

nul

tip

întreg

  • limbi

Limbi traduse

tip

array

implicit

elemente

Codul limbii

tip

șir

exemple

cs

model

^.*$

implicit

  • secundare_limbi

Limbi secundare

tip

array

implicit

elemente

Codul limbii

tip

șir

exemple

sk

model

^.*$

implicit

  • urmărit

Proiecte vizionate

tip

array

implicit

elemente

Denumire proiect

tip

șir

exemple

weblate

model

^.*$

implicit

  • Auditare de jurnal

Audit log

tip

array

implicit

elemente

Elemente

tip

obiect

proprietăți

  • adresă

Adresă IP

tip

șir

exemple

127.0.0.1

model

^.*$

implicit

  • utilizator_agent

Agent utilizator

tip

șir

exemple

PC / Linux / Firefox 70.0

model

^.*$

implicit

  • timbrare

Timbrare

tip

șir

exemple

2019-11-18T18:58:30.845Z

model

^.*$

implicit

  • activitate

Activitate

tip

șir

exemple

autentificare

model

^.*$

implicit

definiții

Eliberarea Weblate

Program de lansare

Weblate are un ciclu de lansare de două luni pentru versiuni (x.y). Acestea sunt de obicei urmate de o serie de versiuni de remediere a problemelor care se strecoară în ele (x.y.z).

Schimbarea versiunii majore indică faptul că procesul de actualizare nu poate sări peste această versiune - trebuie să faceți întotdeauna actualizarea la x.0 înainte de a trece la versiunile superioare x.y.

Planificarea lansării

Caracteristicile pentru viitoarele versiuni sunt colectate folosind reperele GitHub, puteți vedea foaia noastră de parcurs la <https://github.com/WeblateOrg/weblate/milestones>.

Procesul de lansare

Lucruri care trebuie verificate înainte de eliberare:

  1. Verificați limbile nou traduse prin ./scripts/list-translated-languages.

  2. Setați versiunea finală prin ./scripts/prepare-release.

  3. Asigurați-vă că capturile de ecran sunt la zi make -C docs update-screenshots.

  4. Îmbină toate traducerile în așteptare wlc push; git remote update; git merge origin/weblate

Efectuați eliberarea:

  1. Creați o versiune ./scripts/create-release --tag (a se vedea mai jos pentru cerințe).

Etapele manuale ulterioare eliberării:

  1. Actualizați imaginea Docker.

  2. Închideți piatra de hotar GitHub.

  3. După ce imaginea Docker este testată, adăugați o etichetă și împingeți-o.

  4. Actualizarea diagramei Helm la noua versiune.

  5. Includeți noua versiune în .github/workflows/migrations.yml pentru a o include în testele de migrare.

  6. Creșteți versiunea în linkurile de descărcare de pe site.

  7. Creșteți versiunea în depozit prin ./scripts/set-version.

Pentru a crea etichete folosind scriptul ./scripts/create-release veți avea nevoie de următoarele:

  • GnuPG cu cheia privată utilizată pentru semnarea versiunii

  • Push acces la depozitele Weblate git (împinge etichete)

  • Configurat instrumentul hub și acces pentru a crea versiuni pe Weblate repo

  • Acces SSH la serverul de descărcări Weblate (descărcările de pe site sunt copiate acolo)

Securitate și confidențialitate

Sfat

La Weblate, securitatea menține un mediu care prețuiește confidențialitatea utilizatorilor noștri.

Dezvoltarea Weblate aderă la Best Practices of the Linux Foundation’s Core Infrastructure Initiative.

Urmărirea dependențelor pentru vulnerabilități

Security issues in our dependencies are monitored using Dependabot. This covers the Python and JavaScript libraries, and the latest stable release has its dependencies updated to avoid vulnerabilities.

Sugestie

Este posibil să existe vulnerabilități în biblioteci terțe care nu afectează Weblate, așa că acestea nu sunt abordate prin lansarea unor versiuni de corectare a erorilor din Weblate.

Securitatea containerelor Docker

The Docker containers are regularly scanned using Anchore and Trivy security scanners.

Acest lucru ne permite să detectăm vulnerabilitățile din timp și să lansăm rapid îmbunătățiri.

Puteți obține rezultatele acestor scanări pe GitHub - acestea sunt stocate ca artefacte pe CI-ul nostru în formatul SARIF (Static Analysis Results Interchange Format).

Despre Weblate

Obiectivele proiectului

Instrument de localizare continuă bazat pe web, cu un Integrarea controlului versiunilor strâns care suportă o gamă largă de formate, ceea ce facilitează contribuția traducătorilor.

Denumire proiect

„Weblate” este un portmanteau al cuvintelor „web” și „translate”.

Website-ul proiectului

Pagina de destinație este https://weblate.org și există un serviciu găzduit în cloud la https://hosted.weblate.org. Documentația poate fi citită la https://docs.weblate.org.

Logo-uri de proiect

Logo-urile proiectului și alte elemente grafice sunt disponibile în https://github.com/WeblateOrg/graphics.

Conducerea

Acest proiect este întreținut de Michal Čihař, care poate fi contactat la michal@cihar.com.

Autori

Weblate a fost inițiat de Michal Čihař. De la înființarea sa în 2012, mii de oameni au contribuit.

Licență

Copyright (C) 2012 - 2021 Michal Čihař <michal@cihar.com>

Acest program este software liber: îl puteți redistribui și/sau modifica în conformitate cu termenii Licenței Publice Generale GNU, așa cum a fost publicată de Free Software Foundation, fie versiunea 3 a Licenței, fie (la alegerea dumneavoastră) orice versiune ulterioară.

Acest program este distribuit în speranța că va fi util, dar FĂRĂ NICI O GARANȚIE; nici măcar garanția implicită de COMERCIALIZARE sau de ADECVARE LA UN SCOP PARTICULAR. Pentru mai multe detalii, consultați Licența publică generală GNU.

Ar fi trebuit să primiți o copie a Licenței Publice Generale GNU împreună cu acest program. În caz contrar, consultați <https://www.gnu.org/licenses/>.

Weblate 4.9

Released on November 10th 2021.

  • Provide more details for history events.

  • Improved rendering of history.

  • Improved performance of the translation pages.

  • Added support for restricting translation file download.

  • The safe-html can now understand Markdown when used with md-text.

  • The max-length tag now ignores XML markup when used with xml-text.

  • Fixed dimensions of rendered texts in Dimensiunea maximă a traducerii.

  • Lowered app store title length to 30 to assist with upcoming Google policy changes.

  • Added support for customising ssh invocation via SSH_EXTRA_ARGS.

  • Added checks for ICU MessageFormat.

  • Improved error condition hadling in machine translation backends.

  • Highlight unusual whitespace characters in the strings.

  • Added option to stay on translated string while editing.

  • Added support for customising borg invocation via BORG_EXTRA_ARGS.

  • Fixed generating of MO files for monolingual translations.

  • Added API endpoint to download all component translations in a ZIP file.

  • Added support for Python 3.10.

  • Added support for resending e-mail invitation from the management interface.

Weblate 4.8.1

Released on September 10th 2021.

  • A fost reparată eliminarea utilizatorilor din interfața de administrare Django.

  • Document add-on parameters in greater detail.

  • Fixed JavaScript error in glossary.

  • Adăugați o limită la numărul de potriviri în verificarea coerenței.

  • Improve handling of placeholders in machine translations.

  • A fost reparată crearea de add-on-uri utilizând API.

  • A fost adăugată setarea PRIVACY_URL pentru a adăuga un link către politica de confidențialitate în subsol.

  • Hide member e-mail addresses from project admins.

  • Improved gettext PO merging in case of conflicts.

  • Improved glossary highlighting.

  • Improved safe-html flag behavior with XML checks.

  • Fixed commit messages for linked components.

`Toate modificările în detaliu <https://github.com/WeblateOrg/weblate/milestone/70?closed=1>``__.

Weblate 4.8

Lansat pe 21 august 2021.

  • A fost adăugat suport pentru formatul Apple stringsdict.

  • The exact search operator is now case-sensitive with PostgreSQL.

  • A fost reparată salvarea explicațiilor din glosar în unele cazuri.

  • Îmbunătățirea documentației.

  • Îmbunătățiri de performanță.

  • A fost îmbunătățită compatibilitatea add-on-ului squash cu Gerrit.

  • A fost reparată adăugarea de șiruri de caractere la componentele monolingve ale glosarului.

  • Performanță îmbunătățită în ceea ce privește variantele de manipulare.

  • A fost reparat add-on-ul squash, care uneori sărea peste analizarea modificărilor din upstream.

  • Păstrați extensia de fișier pentru descărcări.

  • A fost adăugat suport pentru formatul Fluent.

  • A fost adăugat suport pentru utilizarea filelor pentru a indenta formatele JSON.

`Toate modificările în detaliu <https://github.com/WeblateOrg/weblate/milestone/67?closed=1>``__.

Weblate 4.7.2

Lansat pe 15 iulie 2021.

  • Suportă mai multe alias-uri de limbă care pot fi configurate pentru un proiect.

  • A fost reparată validarea șirului de căutare în API.

  • Fixate URL-urile exportatorului Git după o schimbare de domeniu.

  • A fost reparat add-on-ul de curățare pentru fișierele Windows RC.

  • A fost reparat un posibil blocaj în actualizarea XLIFF.

Toate modificările în detaliu.

Weblate 4.7.1

Lansat pe 30 iunie 2021.

  • Îmbunătățirea ferestrei pop-up pentru adăugarea de termeni în glosar.

  • A fost adăugat suport pentru serviciul de traducere automată LibreTranslate.

  • A fost adăugată limitarea ratei la crearea de noi proiecte.

  • Performanță îmbunătățită a actualizărilor de fișiere.

Toate modificările în detaliu.

Weblate 4.7

Lansat pe 17 iunie 2021.

  • Verificare îmbunătățită a stării de sănătate a configurației.

  • A fost adăugat suport pentru object-pascal-format utilizat în gettext PO, vezi Formatul Object Pascal.

  • A fost redenumit Nearby keys în Similar keys pentru a descrie mai bine scopul.

  • A fost adăugat suport pentru mi18n lang fișiere.

  • Integrare îmbunătățită a autentificării SAML.

  • Fixată integrarea Gerrit pentru a gestiona mai bine cazurile de colț.

  • Weblate necesită acum Django 3.2.

  • S-a rezolvat problema invitării utilizatorilor atunci când autentificarea prin e-mail este dezactivată.

  • Definiții lingvistice îmbunătățite.

  • A fost adăugat suport pentru blocarea utilizatorilor de a contribui la un proiect.

  • A fost reparată crearea automată a glosarelor de limbi.

  • Documentație extinsă privind add-on-urile.

  • Îmbunătățiri de performanță pentru componentele cu depozite legate.

  • A fost adăugat suport pentru DeepL API gratuit.

  • Gestionarea utilizatorilor nu mai are nevoie de interfața de administrare Django.

Toate modificările în detaliu.

Weblate 4.6.2

Lansat pe 8 mai 2021.

  • S-a remediat un accident după mutarea unei componente partajate între proiecte.

  • A fost reparată adăugarea de noi șiruri de caractere în fișierele de proprietăți goale.

  • A fost reparată alinierea pictogramei de copiere în limbile RTL.

  • Statistici extinse ale șirurilor de caractere în fila Info.

  • A fost reparată gestionarea fișierelor de traducere ignorate în Git.

  • Îmbunătățirea performanțelor de măsurare.

  • S-a remediat o posibilă eroare la salvarea glosarelor.

  • A fost corectat comportamentul de verificare a coerenței în cazul limbilor cu reguli de plural diferite.

Toate modificările în detaliu.

Weblate 4.6.1

Lansat pe 2 mai 2021.

  • Eliminarea codului învechit de protecție împotriva spam-ului.

  • Îmbunătățirea acurateței verificării pluralului de surse.

  • Actualizarea listei de limbi de interfață cu utilizatorul în Docker.

  • Mesaje de eroare îmbunătățite la crearea de cereri de extragere.

  • A fost reparată crearea de solicitări de tip pull pe Pagure.

  • S-a remediat declanșarea instalării automate a suplimentelor.

  • Ați rezolvat posibile probleme de cache la actualizare.

  • A fost reparată adăugarea de noi unități la traducerile monolingve prin încărcare.

Toate modificările în detaliu.

Weblate 4.6

Lansat pe 19 aprilie 2021.

  • Comanda de gestionare auto_translate are acum un parametru pentru specificarea modului de traducere.

  • A fost adăugat suport pentru Fișiere text.

  • Au fost adăugate tendințe și măsurători pentru toate obiectele.

  • A fost adăugat suport pentru copierea directă a textului din limbile secundare.

  • A fost adăugată filtrarea datei la navigarea modificărilor.

  • Grafice de activitate îmbunătățite.

  • Expeditorul pentru e-mailurile din formularele de contact poate fi acum configurat.

  • A fost îmbunătățită validarea parametrilor în API de creare a componentelor.

  • Limitarea tarifelor nu se mai aplică superutilizatorilor.

  • Îmbunătățirea performanțelor și a fiabilității suplimentului de traducere automată.

  • Limitarea ratei poate fi acum personalizată în containerul Docker.

  • API pentru crearea de componente utilizează acum în mod automat URL-uri interne Weblate.

  • Indicarea simplificată a stării în timpul listării șirurilor de caractere.

  • Hașurarea parolelor utilizează acum Argon2 în mod implicit.

  • Barele de progres simplificate care indică starea traducerii.

  • Redenumit Adăugați limbile lipsă pentru a clarifica scopul.

  • A fost reparată salvarea stării șirurilor de caractere în XLIFF.

  • A fost adăugată căutarea la nivel de limbă.

  • Suport inițial pentru Scalare pe orizontală la implementarea Docker.

`Toate modificările în detaliu <https://github.com/WeblateOrg/weblate/milestone/61?closed=1>``__.

Weblate 4.5.3

Lansat pe 1 aprilie 2021.

  • A fost fixată colectarea metricilor.

  • A fost reparat un posibil accident la adăugarea de șiruri de caractere.

  • Exemple îmbunătățite de interogări de căutare.

  • A fost reparată posibila pierdere a șirurilor nou adăugate la înlocuirea încărcării.

Weblate 4.5.2

Lansat pe 26 martie 2021.

  • Program configurabil pentru traducerea automată.

  • A fost adăugată verificarea formatului Lua.

  • Ignoră șirurile de formate în verificarea Cuvinte consecutive duplicate.

  • Permiteți încărcarea capturii de ecran de pe o pagină de traducere.

  • S-a adăugat sincronizarea forțată a fișierelor la întreținerea depozitului.

  • A fost reparată sugestia automată pentru limbile cu un cod mai lung.

  • Performanță îmbunătățită la adăugarea de noi șiruri de caractere.

  • Mai multe corecturi de erori în controalele de calitate.

  • Mai multe îmbunătățiri de performanță.

  • A fost adăugată integrarea cu Descoperiți Weblate.

  • S-a corectat comportamentul verificărilor cu șiruri de caractere numai pentru citire.

Toate modificările în detaliu.

Weblate 4.5.1

Lansat pe 5 martie 2021.

  • A fost reparată editarea indicatoarelor din glosar în unele cazuri speciale.

  • Extindeți utilizarea metricilor pentru a îmbunătăți performanța mai multor pagini.

  • Stocați limba sursă corectă în fișierele TMX.

  • O mai bună gestionare a încărcărilor de OP monolingve utilizând API.

  • A fost îmbunătățit comportamentul alertelor pe componentele glosarului.

  • Verificări îmbunătățite ale legăturilor Markdown.

  • Indicați glosarul și limba sursă în breadcrumbs.

  • Lista paginată a componentelor din proiecte uriașe.

  • Îmbunătățirea performanțelor de eliminare a traducerilor, a componentelor sau a proiectelor.

  • Îmbunătățirea performanțelor de editare în masă.

  • Corectarea păstrării stărilor „Necesită editare” și „Aprobat” pentru fișierele ODF.

  • Interfață îmbunătățită pentru personalizarea descărcărilor de fișiere de traducere

Toate modificările în detaliu.

Weblate 4.5

Lansat pe 19 februarie 2021.

  • A fost adăugat suport pentru lua-format utilizat în gettext PO.

  • A fost adăugat suport pentru partajarea unei componente între proiecte.

  • A fost corectat comportamentul de verificare a mai multor variabile fără nume cu mai multe indicatori de format.

  • A renunțat la câmpul listei de discuții pe proiect în favoarea unor instrucțiuni generice pentru traducători.

  • A fost adăugat un add-on pentru generarea de pseudolocale.

  • A fost adăugat suport pentru fișierele TermBase eXchange.

  • S-a adăugat suport pentru definirea manuală a variantelor de șiruri de caractere cu ajutorul unui indicator.

  • Îmbunătățirea performanței verificărilor de coerență.

  • Îmbunătățirea performanței memoriei de traducere pentru șirurile lungi.

  • A fost adăugat suport pentru căutarea în explicații.

  • Șirurile de caractere pot fi acum adăugate și eliminate și în formate bilingve.

  • Extindeți lista de limbi acceptate în traducerea automată Amazon Translate.

  • Activați în mod automat verificările Java MessageFormat pentru proprietățile Java.

  • A fost adăugată o nouă metodă de încărcare pentru a adăuga noi șiruri de caractere la o traducere.

  • A fost adăugată o interfață simplă pentru a răsfoi traducerile.

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

  • S-a renunțat la API-ul specific pentru glosare, deoarece acum se utilizează API-ul pentru componente.

  • A fost adăugată o interfață simplificată pentru a comuta unele dintre indicatori.

  • A fost adăugat suportul pentru termenii netraductibili sau interziși în glosar.

  • A fost adăugat suport pentru definirea terminologiei într-un glosar.

  • Am mutat comutatorul de direcție a textului pentru a obține mai mult spațiu pentru tastatura vizuală.

  • A fost adăugată opțiunea de a urmări automat proiectele la care a contribuit utilizatorul.

  • S-a adăugat verificarea dacă traducerea se potrivește cu glosarul.

  • A fost adăugat suport pentru personalizarea culorii textului de navigare.

Toate modificările în detaliu.

Weblate 4.4.2

Lansat pe 14 ianuarie 2021.

  • A fost reparată deteriorarea unui fișier MO distribuit.

Weblate 4.4.1

Lansat pe 13 ianuarie 2021.

  • S-a reparat anularea modificărilor de plural.

  • S-a reparat afișarea ajutorului pentru setările proiectului.

  • Administrarea îmbunătățită a utilizatorilor.

  • Gestionarea îmbunătățită a contextului în fișierele PO monolingve.

  • A fost corectat comportamentul add-on-ului de curățare cu formatele HTML, ODF, IDML și Windows RC.

  • A fost reparată analizarea locației din fișierele CSV.

  • Utilizați compresia conținutului pentru descărcările de fișiere.

  • A fost îmbunătățită experiența utilizatorului la importul dintr-un fișier ZIP.

  • A fost îmbunătățită detectarea formatului de fișier pentru încărcări.

  • Evitați cererile duplicate pe Pagure.

  • A fost îmbunătățită performanța la afișarea traducerilor fantomă.

  • Reimplementat editorul de traduceri pentru a utiliza textarea nativă a browserului.

  • S-a rezolvat problema cu adăugarea de noi șiruri de caractere.

  • A fost adăugat API pentru suplimente.

Toate modificările în detaliu.

Weblate 4.4

Lansat pe 15 decembrie 2020.

  • Validare îmbunătățită la crearea unei componente.

  • Weblate necesită acum Django 3.1.

  • A fost adăugat suport pentru personalizarea aspectului în interfața de gestionare.

  • A fost reparată manipularea stării doar pentru citire în editarea în bloc.

  • Integrare CodeMirror îmbunătățită.

  • Adăugat add-on pentru a elimina șirurile de caractere goale din fișierele de traducere.

  • Editorul CodeMirror este acum utilizat pentru traduceri.

  • Evidențierea sintaxei în editorul de traduceri pentru XML, HTML, Markdown și reStructuredText.

  • Evidențiați elementele locuibile în editorul de traduceri.

  • Suport îmbunătățit pentru codurile de limbă non-standard.

  • A fost adăugată o alertă atunci când se utilizează coduri lingvistice ambigue.

  • Utilizatorului i se prezintă acum o listă filtrată de limbi atunci când adaugă o nouă traducere.

  • Capacități extinse de căutare a modificărilor din istoric.

  • Îmbunătățirea paginilor de detaliere a facturării și a fluxului de lucru de găzduire liberă.

  • API extinsă pentru statisticile de traducere.

  • S-a îmbunătățit fila „alte traduceri” în timpul traducerii.

  • S-a adăugat API pentru sarcini.

  • Îmbunătățirea performanțelor de încărcare a fișierelor.

  • Afișarea îmbunătățită a caracterelor speciale definite de utilizator.

  • Îmbunătățirea performanței traducerii automate.

  • Câteva îmbunătățiri minore în interfața cu utilizatorul.

  • Îmbunătățirea denumirii descărcărilor ZIP.

  • A fost adăugată opțiunea de a primi notificări privind proiectele nevăzute.

Weblate 4.3.2

Lansat pe 4 noiembrie 2020.

  • A fost reparat un blocaj la anumite măști de fișiere ale componentelor.

  • A fost îmbunătățită acuratețea verificării cuvintelor duplicate consecutive.

  • A fost adăugat suportul pentru cererile Pagure pull.

  • Mesaje de eroare îmbunătățite pentru înregistrările eșuate.

  • S-a revenit la redarea comentariilor dezvoltatorilor ca Markdown.

  • Configurarea simplificată a depozitelor Git cu o ramură implicită diferită de „master”.

  • Depozitele interne nou create utilizează acum main ca ramură implicită.

  • Reducerea ratei falsurilor pozitive de traducere neschimbată în timpul traducerii reStructuredText.

  • Au fost rezolvate problemele de afișare a CodeMirror în anumite situații.

  • A fost redenumit grupul de șabloane în „Surse” pentru a-i clarifica semnificația.

  • A fost reparată solicitarea GitLab pull requests pentru depozite cu căi mai lungi.

Toate modificările în detaliu.

Weblate 4.3.1

Lansat pe 21 octombrie 2020.

  • Îmbunătățirea performanței traducerii automate.

  • Fixarea expirării sesiunii pentru utilizatorii autentificați.

  • Adăugați suport pentru ascunderea informațiilor despre versiune.

  • Îmbunătățirea compatibilității hook-urilor cu Bitbucket Server.

  • Îmbunătățirea performanțelor de actualizare a memoriei de traducere.

  • Utilizare redusă a memoriei.

  • Performanță îmbunătățită a vizualizării Matrix.

  • A fost adăugată confirmarea înainte de a elimina un utilizator dintr-un proiect.

Weblate 4.3

Lansat pe 15 octombrie 2020.

  • Includeți statisticile utilizatorilor în API.

  • A fost reparată ordonarea componentelor pe paginile paginate.

  • Definiți limba sursă pentru un glosar.

  • Suport rescris pentru solicitările GitHub și GitLab pull requests.

  • Am corectat numărul de statistici după eliminarea sugestiei.

  • Profil de utilizator public extins.

  • A fost corectată configurația verificărilor obligatorii.

  • Îmbunătățirea documentației privind copiile de rezervă încorporate.

  • A mutat atributul limbii sursă de la proiect la o componentă.

  • Adăugați verificarea formatării Vue I18n.

  • Verificarea generică a locurilor de ordine suportă acum expresii regulate.

  • Aspectul modului Matrix a fost îmbunătățit.

  • Mașinile se numesc acum sugestii automate.

  • A fost adăugat suport pentru interacțiunea cu mai multe instanțe GitLab sau GitHub.

  • API extinsă pentru a acoperi actualizările de proiecte, actualizările și eliminările de unități și glosare.

  • Unit API gestionează acum în mod corespunzător șirurile de caractere la plural.

  • Crearea componentelor poate gestiona acum încărcarea fișierelor ZIP sau a documentelor.

  • Codurile de stare ale răspunsurilor API consolidate.

  • Sprijină Markdown în acordul colaboratorului.

  • Îmbunătățirea urmăririi șirurilor sursă.

  • Compatibilitate îmbunătățită cu formatele JSON, YAML și CSV.

  • A fost adăugat suport pentru eliminarea șirurilor de caractere.

  • Performanță îmbunătățită a descărcărilor de fișiere.

  • Vizualizare îmbunătățită a gestionării depozitelor.

  • Activați automat formatul java pentru Android.

  • A fost adăugat suport pentru capturi de ecran localizate.

  • A fost adăugat suport pentru Python 3.9.

  • A fost reparată traducerea fișierelor HTML în anumite condiții.

Toate modificările în detaliu.

Weblate 4.2.2

Lansat pe 2 septembrie 2020.

  • Corectarea corectă a șirurilor sursă pentru formatele JSON.

  • A fost reparată redirecționarea la autentificare pentru unele configurații de autentificare.

  • A fost reparată autentificarea LDAP cu sincronizarea grupurilor.

  • S-a remediat o eroare în raportarea progresului traducerii automate.

  • A fost reparată comprimarea trimiterilor Git cu trailerele activate.

  • A fost reparată crearea de componente VCS locale utilizând API.

Weblate 4.2.1

Lansat pe 21 august 2020.

  • A fost reparată salvarea pluralului pentru unele localități în resursele Android.

  • A fost reparat un accident în completarea de curățare pentru unele fișiere XLIFF.

  • Permiteți configurarea CDN de localizare în imaginea Docker.

Weblate 4.2

Lansat pe 18 august 2020.

  • Îmbunătățirea paginilor de utilizator și adăugarea unei liste de utilizatori.

  • S-a renunțat la suportul pentru migrarea de la versiunile 3.x, migrați prin 4.1 sau 4.0.

  • Au fost adăugate exporturi în mai multe formate monolingve.

  • Grafice de activitate îmbunătățite.

  • Numărul de șiruri apropiate afișate poate fi configurat.

  • S-a adăugat suport pentru blocarea componentelor care se confruntă cu erori de depozit.

  • Navigare principală simplificată (butoanele au fost înlocuite cu pictograme).

  • A fost îmbunătățită gestionarea codurilor de limbă în integrarea Google Translate.

  • Add-on-ul Git squash poate genera trailere Co-author by:.

  • A fost îmbunătățit parserul de căutare a interogărilor.

  • A fost îmbunătățit feedback-ul utilizatorului în urma verificării șirurilor de formate.

  • Performanță îmbunătățită a schimbărilor de stare în masă.

  • Au fost adăugate redirecționări de compatibilitate după redenumirea proiectului sau a componentelor.

  • S-au adăugat notificări pentru aprobarea șirurilor, blocarea componentelor și modificarea licenței.

  • A fost adăugat suport pentru ModernMT.

  • Permite evitarea suprascrierii traducerilor aprobate la încărcarea fișierelor.

  • A renunțat la suportul pentru unele redirecționări URL de compatibilitate.

  • A fost adăugată verificarea pentru șabloanele literale ECMAScript.

  • A fost adăugată opțiunea de a urmări o componentă.

  • A fost eliminat punctul din față din cheile de unitate JSON.

  • A fost eliminată coada Celery separată pentru memoria de traducere.

  • Permiteți traducerea tuturor componentelor unei limbi în același timp.

  • Permite configurarea antetelor HTTP Content-Security-Policy.

  • A fost adăugat suportul pentru aliasarea limbilor la nivel de proiect.

  • Un nou add-on pentru a ajuta la localizarea HTML sau JavaScript, vezi CDN de localizare JavaScript.

  • Domeniul Weblate este acum configurat în setări, vezi SITE_DOMAIN.

  • Adăugați suport pentru căutarea în funcție de componentă și proiect.

Weblate 4.1.1

Lansat pe 19 iunie 2020.

  • A fost reparată modificarea configurației autofix sau add-ons în Docker.

  • S-a remediat o posibilă eroare în pagina „Despre”.

  • Instalarea îmbunătățită a fișierelor locale compilate pe octeți.

  • A fost reparată adăugarea de cuvinte în glosar.

  • Fixate comenzi rapide de la tastatură pentru mașini.

  • A fost eliminată ieșirea de depanare care cauzează aruncarea evenimentelor de jurnal în unele configurații.

  • A fost reparată indicarea blocării pe lista de proiecte.

  • A fost reparată listarea cheilor GPG în unele configurații.

  • S-a adăugat o opțiune pentru versiunea de API DeepL pe care să o utilizați.

  • A fost adăugat suport pentru a acționa ca furnizor de servicii SAML, a se vedea Autentificare SAML.

Weblate 4.1

Lansat pe 15 iunie 2020.

  • A fost adăugat suport pentru crearea de noi traduceri cu codul de țară inclus.

  • A fost adăugat suportul pentru căutarea șirurilor sursă cu captură de ecran.

  • Informații suplimentare disponibile în statisticile de perspectivă.

  • A fost îmbunătățită editarea căutării pe paginile „Traducere”.

  • Îmbunătățirea gestionării actualizărilor simultane ale depozitelor.

  • Includeți limba sursă în formularul de creare a proiectului.

  • Includeți modificările în credite.

  • A fost reparată selecția limbii din interfață în unele cazuri.

  • Permiteți includerea în lista albă a metodelor de înregistrare cu înregistrări închise.

  • Îmbunătățirea căutării termenilor înrudiți în glosar.

  • Îmbunătățirea corespondențelor cu memoria de traducere.

  • Grupați aceleași echipamente rezultate.

  • Adăugați un link direct către editarea capturii de ecran din pagina de traducere.

  • A fost îmbunătățit dialogul de confirmare a eliminării.

  • Includeți șabloanele în descărcarea ZIP.

  • Adăugarea suportului pentru Markdown și configurarea notificărilor în anunțuri.

  • Detalii extinse în listele de verificare.

  • A fost adăugat suport pentru noi formate de fișiere: Laravel PHP șiruri de caractere, Fișiere HTML, Formatul OpenDocument, Formatul IDML, Fișiere Windows RC, Traduceri INI, Traduceri Inno Setup INI, Proprietăți GWT, fișiere JSON go-i18n, Fișier ARB.

  • Utilizați în mod consecvent dismissed ca stare de verificări dismissed.

  • Adăugați suportul pentru configurarea modulelor suplimentare implicite de activat.

  • S-a reparat comanda rapidă de la tastatură a editorului pentru a respinge verificările.

  • A fost îmbunătățită traducerea automată a șirurilor de caractere cu spații libere.

  • Afișați traducerea fantomă pentru limbile utilizatorilor pentru a ușura inițierea acestora.

  • Îmbunătățirea analizei codurilor de limbă.

  • Afișați mai întâi în listă traducerile în limba utilizatorului.

  • Redenumirea formelor în variante de nume mai generice.

  • Au fost adăugate noi controale de calitate: Variabile multiple fără nume, Lungă netradusă, Cuvinte consecutive duplicate.

  • A fost reintrodus suportul pentru ștergerea memoriei de traducere.

  • A fost reparată opțiunea de a ignora verificările sursei.

  • A fost adăugat suport pentru configurarea unei ramuri diferite pentru împingerea modificărilor.

  • API raportează acum starea de limitare a ratei în anteturile HTTP.

  • A fost adăugat suport pentru Google Translate V3 API (avansat).

  • A fost adăugată posibilitatea de a restricționa accesul la nivel de componentă.

  • A fost adăugat suport pentru spații albe și alte caractere speciale în steagurile de traducere, vezi Personalizarea comportamentului cu ajutorul stegulețelor.

  • Afișați întotdeauna textul redat verificați dacă este activat.

  • API suportă acum filtrarea modificărilor.

  • A fost adăugat suport pentru partajarea glosarelor între proiecte.

Weblate 4.0.4

Lansat pe 7 mai 2020.

  • A fost reparată executarea suitei de teste în unele medii Python 3.8.

  • Corecții de greșeli de tipar în documentație.

  • A fost reparată crearea de componente utilizând API în unele cazuri.

  • Au fost corectate erorile JavaScript care afectează navigarea pe mobil.

  • S-a remediat o eroare la afișarea unor controale.

  • A fost reparată lista de capturi de ecran.

  • A fost reparată notificarea lunară a sumarului.

  • A fost corectat comportamentul traducerii intermediare în cazul în care unitățile nu există în traducere.

Weblate 4.0.3

Lansat pe 2 mai 2020.

  • A fost reparat un posibil blocaj în rapoarte.

  • Mențiunile utilizatorilor în comentarii sunt acum insensibile la majuscule și minuscule.

  • A fost reparată migrarea PostgreSQL pentru cei care nu sunt superutilizatori.

  • S-a remediat modificarea URL-ului depozitului în timpul creării componentei.

  • A fost reparat blocajul atunci când depozitul din upstream a dispărut.

Weblate 4.0.2

Lansat pe 27 aprilie 2020.

  • Performanță îmbunătățită a statisticilor de traducere.

  • Îmbunătățirea performanțelor de schimbare a etichetelor.

  • Îmbunătățirea performanțelor de editare în masă.

  • Îmbunătățirea performanțelor memoriei de traducere.

  • A fost reparată o posibilă blocare la ștergerea componentelor.

  • A fost reparată afișarea modificărilor de traducere în unele cazuri dificile.

  • A fost îmbunătățit avertismentul privind coada prea lungă a celery.

  • A fost reparat un posibil fals pozitiv în verificarea coerenței.

  • A fost reparat blocajul la modificarea depozitului de componente legate.

  • Distanța de editare inclusă în lista de modificări și în rapoartele CSV și CSV.

  • Evitați falsurile pozitive ale verificării spațiilor de punctuație pentru limba franceză canadiană.

  • A fost reparat exportul XLIFF cu caractere de poziție.

  • A fost reparat un fals pozitiv la verificarea lățimii zero.

  • Raportarea îmbunătățită a erorilor de configurare.

  • A fost reparată încărcarea sursei bilingve.

  • Detectați automat limbile acceptate pentru DeepL traducere automată.

  • A fost reparată afișarea barei de progres în unele cazuri de colț.

  • Corectarea unor verificări care se declanșau în cazul șirurilor de caractere netraduse.

Weblate 4.0.1

Lansat pe 16 aprilie 2020.

  • A fost reparată instalarea pachetelor din PyPI.

Weblate 4.0

Lansat pe 16 aprilie 2020.

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

  • A fost adăugată o prezentare generală a gestionării alertelor privind componentele.

  • A fost adăugată o alertă de componentă pentru adresele URL ale browserului pentru depozite rupte.

  • Pagini îmbunătățite de conectare și înregistrare.

  • Controlul accesului la proiect și configurarea fluxurilor de lucru integrate în setările proiectului.

  • A fost adăugată o verificare și o evidențiere pentru interpolarea i18next și pentru anvelopare.

  • A fost adăugată o verificare și o evidențiere pentru rubricile cu procente.

  • Afișarea sugestiilor de sugestii care nu reușesc controalele.

  • Înregistrați modificările șirului sursă în istoric.

  • Microsoft Translator a fost actualizat la versiunea 3 API.

  • Reimplementat backend de memorie de traducere.

  • A fost adăugat suport pentru mai multe căutări is: în Căutare.

  • Permiteți ca Traducere neschimbată să evite lista neagră internă.

  • A fost îmbunătățită extragerea comentariilor din fișierele po monolingve.

  • A redenumit mesajele de tablă albă în anunțuri.

  • Au fost rezolvate problemele ocazionale cu e-mailurile de înregistrare.

  • A fost îmbunătățit add-on-ul de actualizare LINGUAS pentru a gestiona mai multe variante de sintaxă.

  • A fost reparată editarea unui fișier sursă XLIFF monolingv.

  • A fost adăugat suport pentru potrivirea exactă în Căutare.

  • API extins pentru a acoperi capturi de ecran, utilizatori, grupuri, liste de componente și crearea extinsă de proiecte.

  • Adăugați suport pentru încărcarea sursei în cazul traducerilor bilingve.

  • A fost adăugat suport pentru limbajul intermediar de la dezvoltatori.

  • A fost adăugat suport pentru revizuirea șirurilor de surse.

  • Opțiuni de descărcare extinse pentru memoria de traducere pentru întreaga platformă.

Seria Weblate 3.x

Weblate 3.11.3

Lansat pe 11 martie 2020.

  • S-a reparat căutarea câmpurilor cu o anumită prioritate.

  • A fost reparată interogarea predefinită pentru șirurile adăugate recent.

  • A fost reparată căutarea care returnează corespondențe duplicate.

  • A fost reparată redarea notificărilor în Gmail.

  • A fost reparată anularea modificărilor din istoric.

  • Au fost adăugate linkuri către evenimente în notificările de sinteză.

  • A fost reparat e-mailul pentru confirmarea eliminării contului.

  • A fost adăugat suport pentru autentificarea Slack în containerul Docker.

  • Evitați trimiterea de notificări pentru limbile neabonate.

  • Includeți cozile de așteptare Celery în prezentarea generală a performanțelor.

  • Au fost reparate linkurile de documentare pentru suplimente.

  • Reducerea numărului de falsuri negative pentru verificarea traducerilor neschimbate.

  • A crescut dependența de înălbitor pentru a aborda CVE-2020-6802.

  • A fost reparată listarea modificărilor la nivel de proiect în istoric.

  • A fost reparată invalidarea statisticilor în unele cazuri particulare.

  • A fost reparată căutarea anumitor stări ale șirurilor de caractere.

  • A fost îmbunătățit comportamentul de verificare a șirului de formate în cazul în care lipsește un procent.

  • A fost reparată autentificarea cu ajutorul unor furnizori terți.

Weblate 3.11.2

Lansat pe 22 februarie 2020.

  • A fost reparată redarea sugestiilor.

  • Corectarea unor șiruri de caractere raportate în mod greșit ca neavând cuvinte.

Weblate 3.11.1

Lansat pe 20 februarie 2020.

  • Modificări documentate ale configurației Celery.

  • A fost îmbunătățită validarea numelui de fișier la crearea componentelor.

  • Au fost corectate versiunile minime ale unor dependențe.

  • A fost reparată adăugarea de grupuri cu anumite versiuni Django.

  • Fixat împingerea manuală în depozitul din upstream.

  • Îmbunătățirea potrivirii glosarului.

Weblate 3.11

Lansat pe 17 februarie 2020.

  • Permiteți utilizarea URL-ului VCS push în timpul creării componentelor prin API.

  • Verificarea lățimii redate afișează acum imaginea cu redarea.

  • Fixarea linkurilor din e-mailurile de notificare.

  • Aspectul îmbunătățit al mesajelor de e-mail în clar.

  • Afișați controalele ignorate și permiteți să le activați din nou.

  • Afișarea tastelor din apropiere în cazul traducerilor monolingve.

  • A fost adăugat suport pentru gruparea formelor de corzi.

  • Recomandați actualizarea la noile versiuni Weblate în cadrul verificărilor de sistem.

  • Furnizarea unei analize mai detaliate pentru alerta de duplicat de limbă.

  • Includeți informații mai detaliate despre licență pe paginile proiectului.

  • Dezactivarea automată a copiilor locale, dacă este necesar.

  • A fost reparată descărcarea șirurilor de caractere care necesită acțiune.

  • Alertă nouă pentru a avertiza cu privire la utilizarea de două ori a aceleiași măști de fișier.

  • Îmbunătățiți extragerea de elemente locuibile XML.

  • Setarea SINGLE_PROJECT poate impune acum redirecționarea către proiectul ales.

  • A fost adăugată opțiunea de a rezolva comentariile.

  • A fost adăugată editarea în bloc a steagurilor.

  • A fost adăugat suport pentru Șir de etichete.

  • A fost adăugat un add-on pentru editarea în masă.

  • A fost adăugată opțiunea pentru Executarea controalelor.

  • A crescut validitatea implicită a linkurilor de confirmare.

  • Îmbunătățirea integrării Matomo.

  • Fixat A fost tradus pentru a gestiona corect schimbarea șirului sursă.

  • Configurație extinsă a actualizărilor automate prin AUTO_UPDATE.

  • Suplimentele LINGUAS realizează acum o sincronizare completă a traducerilor în Weblate.

Weblate 3.10.3

Lansat pe 18 ianuarie 2020.

  • Suport pentru translate-toolkit 2.5.0.

Weblate 3.10.2

Lansat pe 18 ianuarie 2020.

  • Adăugați indicații de blocare la proiecte.

  • S-a remediat o eroare CSS care provoca pâlpâiri în unele browsere web.

  • A fost reparată căutarea pe sisteme cu locații care nu sunt în limba engleză.

  • A fost îmbunătățită potrivirea depozitelor pentru cârligele GitHub și Bitbucket.

  • A fost reparată migrarea datelor pe unele instalații Python 2.7.

  • Permite configurarea clonării superficiale Git.

  • Îmbunătățirea procesării notificărilor în fundal.

  • A fost reparată trimiterea de formulare întreruptă la navigarea înapoi în browserul web.

  • Un nou add-on pentru a configura formatarea YAML.

  • A fost reparată verificarea acelorași pluraluri pentru a nu se declanșa în limbile cu o singură formă de plural.

  • A fost reparată căutarea regex în anumite câmpuri.

Weblate 3.10.1

Lansat pe 9 ianuarie 2020.

  • API extins cu crearea de traduceri.

  • Au fost corectate mai multe cazuri de colț în migrările de date.

  • Compatibilitate cu Django 3.0.

  • Îmbunătățirea performanțelor de curățare a datelor.

  • A fost adăugat suport pentru security.txt personalizabil.

  • Îmbunătățit breadcrumbs în changelog.

  • A fost îmbunătățită lista de traduceri de pe tabloul de bord.

  • Răspunsuri HTTP îmbunătățite pentru webhooks.

  • A fost adăugat suport pentru cererile de îmbinare GitLab în containerul Docker.

Weblate 3.10

Lansat pe 20 decembrie 2019.

  • Interfața de utilizator a aplicației a fost îmbunătățită.

  • A fost adăugată verificarea spațiului dublu.

  • A fost reparată crearea de noi limbi.

  • Evitați să trimiteți notificări de auditlog la e-mailurile șterse.

  • Added support for read-only strings.

  • A fost adăugat suport pentru Markdown în comentarii.

  • Permite plasarea textului instrucțiunilor de traducere în informațiile despre proiect.

  • Adăugați funcția de copiere în clipboard pentru limbile secundare.

  • Suport îmbunătățit pentru Mercurial.

  • Îmbunătățirea performanțelor de preluare a depozitelor Git.

  • Adăugați căutarea pentru vârsta șirului de caractere.

  • Afișează limba sursă pentru toate traducerile.

  • Afișează contextul pentru șirurile din apropiere.

  • A fost adăugat suportul pentru notificări privind operațiunile din depozite.

  • Listă de traduceri îmbunătățită.

  • Capacități de căutare extinse.

  • A fost adăugat suport pentru traducerea automată a șirurilor de caractere marcate pentru editare.

  • Evitați trimiterea de notificări duplicate pentru alertele legate de componente.

  • Îmbunătățirea mesajului implicit de cerere de fuziune.

  • Indică mai bine starea șirului în modul Zen.

  • A fost adăugat suport pentru mai multe limbi în Yandex Translate.

  • Îmbunătățirea aspectului e-mailurilor de notificare.

  • Oferiți posibilitatea de a alege licența de traducere.

Weblate 3.9.1

Se lansează pe 28 octombrie 2019.

  • Eliminați unele fișiere inutile din copiile de rezervă.

  • A fost reparat un potențial accident în rapoarte.

  • A fost reparat eșecul migrării între baze de date.

  • A fost adăugat suport pentru forțarea împingerii depozitelor Git.

  • Reducerea riscului de invalidare a token-ului de înregistrare.

  • Eliminarea fixă a contului a lovit limitatorul de rată.

  • A fost adăugată căutarea pe bază de prioritate.

  • S-a remediat o posibilă eroare la adăugarea de șiruri de caractere în fișierul JSON.

  • Verificarea și corectarea Safe HTML onorează acum marcajul șirului sursă.

  • Evitați trimiterea de notificări către utilizatorii invitați și șterși.

  • Corectarea conexiunii SSL la redis în Celery în containerul Docker.

Weblate 3.9

Se lansează pe 15 octombrie 2019.

  • Includeți metadatele Weblate în fișierele descărcate.

  • Îmbunătățirea interfeței de utilizare pentru verificările eșuate.

  • Indicarea șirurilor de caractere lipsă în verificările de format.

  • Verificare separată pentru spațierea punctuației franceze.

  • Adăugarea suportului pentru remedierea unor erori de verificare a calității.

  • Adăugați permisiunea separată de a crea proiecte noi.

  • Extindeți statisticile pentru numărul de caractere.

  • Îmbunătățirea suportului pentru codurile de limbaj în stil Java.

  • A fost adăugată o nouă verificare generică pentru caracterele de siguranță.

  • Adăugat suportul pentru marcajele JSON WebExtension JSON.

  • A fost adăugat suport pentru formatul XML plat.

  • API extinsă cu eliminarea și crearea de proiecte, componente și traduceri.

  • A fost adăugat suport pentru Gitea și Gitee webhooks.

  • A fost adăugată o nouă verificare personalizată bazată pe regex.

  • Permite configurarea contribuției la memoria de traducere partajată.

  • A fost adăugată descărcarea ZIP pentru mai multe fișiere de traducere.

  • Efectuați o analiză conformă cu standardul XLIFF a lățimii maxime și a fontului.

  • A fost adăugată o nouă verificare și reparare a marcajelor HTML sigure pentru traducerea aplicațiilor web.

  • Adăugați o alertă de componentă privind configurația neacceptată.

  • A fost adăugat un add-on de traducere automată pentru traducerile bootstrap.

  • Extindeți traducerea automată pentru a adăuga sugestii.

  • Afișarea parametrilor suplimentari în prezentarea generală.

  • Sentry este acum suportat prin Sentry SDK modern în loc de Raven.

  • S-au modificat setările de exemplu pentru a se potrivi mai bine mediului de producție.

  • Adăugat backup-uri automate folosind BorgBackup.

  • Supliment de curățare divizată pentru RESX pentru a evita actualizările nedorite de fișiere.

  • Au fost adăugate capacități de căutare avansată.

  • Permiteți utilizatorilor să își descarce propriile rapoarte.

  • A fost adăugat un ghid de localizare pentru a ajuta la configurarea componentelor.

  • A fost adăugat suport pentru cererile de îmbinare GitLab.

  • Afișarea îmbunătățită a stării depozitului.

  • Efectuați traduceri automate în fundal.

Weblate 3.8

Se lansează pe 15 august 2019.

  • S-a adăugat suport pentru crearea simplificată de componente similare.

  • A fost adăugat suport pentru analizarea indicatorilor de traducere din formatele de fișiere bazate pe XML.

  • Înregistrați excepțiile în jurnalul de Celery.

  • Îmbunătățirea performanțelor suplimentelor cu domeniul de aplicare al depozitului.

  • Îmbunătățirea aspectului e-mailurilor de notificare.

  • A fost reparat comportamentul de resetare a parolei.

  • Performanță îmbunătățită pe majoritatea paginilor de traducere.

  • A fost corectată lista de limbi necunoscute de Weblate.

  • Adăugați suport pentru clonarea suplimentelor la componentele descoperite.

  • Adăugați suport pentru înlocuirea conținutului fișierului cu încărcat.

  • Adăugați suport pentru traducerea conținutului care nu se bazează pe VCS.

  • A fost adăugată imaginea widget-ului OpenGraph pentru a fi utilizată pe rețelele sociale.

  • A fost adăugat suport pentru capturi de ecran animate.

  • Gestionarea îmbunătățită a fișierelor XLIFF monolingve.

  • Evitați trimiterea mai multor notificări pentru un singur eveniment.

  • Adăugați suport pentru filtrarea modificărilor.

  • Perioade predefinite extinse pentru raportare.

  • A fost adăugat suportul webhook pentru Azure Repos.

  • Noi notificări opt-in privind sugestiile în așteptare sau șirurile de caractere netraduse.

  • Adăugați un link de dezabonare cu un singur clic la e-mailurile de notificare.

  • S-a rezolvat problema falsurilor pozitive cu verificarea A fost tradus.

  • O nouă interfață de gestionare pentru administratori.

  • Prioritatea șirurilor de caractere poate fi acum specificată cu ajutorul indicatoarelor.

  • Au fost adăugate vizualizări de gestionare a limbilor.

  • Adăugați verificări pentru șirurile de format Qt și Ruby.

  • A fost adăugată configurația pentru a se potrivi mai bine instalațiilor pentru un singur proiect.

  • Notificarea despre noul șir de caractere la schimbarea șirului sursă în cazul traducerilor monolingve.

  • A fost adăugată o vizualizare separată pentru memoria de traducere cu capacitate de căutare.

Weblate 3.7.1

Se lansează pe 28 iunie 2019.

  • Actualizări ale documentației.

  • Au fost corectate unele constrângeri legate de cerințe.

  • Baza de date lingvistică actualizată.

  • Actualizări de localizare.

  • Diverse modificări ale interfeței utilizatorului.

  • Gestionarea îmbunătățită a fișierelor de traducere neacceptate, dar descoperite.

  • Raportează mai verosimil cerințele privind formatul de fișier lipsă.

Weblate 3.7

Lansat pe 21 iunie 2019.

  • A fost adăugată o coadă separată Celery pentru notificări.

  • Utilizați un aspect coerent cu aplicația pentru navigarea API.

  • Includeți statisticile aprobate în rapoarte.

  • Raportați progresul înregistrat la actualizarea componentei de traducere.

  • Permite întreruperea executării actualizării componentelor în fundal.

  • Extindeți limbajul de șabloane pentru manipularea numelor de fișiere.

  • Utilizați șabloane pentru linkul editorului și pentru URL-ul browserului de depozit.

  • Indicarea lungimii maxime și a numărului actual de caractere la editarea traducerii.

  • Gestionarea îmbunătățită a abrevierilor în verificarea traducerilor neschimbate.

  • Pagină de destinație reînnoită pentru noii contribuabili.

  • Adăugați suport pentru configurarea add-on-ului msgmerge.

  • Întârzierea deschiderii conexiunii SMTP la trimiterea notificărilor.

  • Înregistrarea erorilor a fost îmbunătățită.

  • Permiteți o locație personalizată în add-on-ul de generare a MO.

  • Completări adăugate pentru a curăța sugestii sau comentarii vechi.

  • A fost adăugată opțiunea de a activa modul orizontal în editorul Zen.

  • Îmbunătățirea performanțelor de import cu multe componente legate.

  • Fixarea exemplelor de instalare în unele cazuri.

  • Îmbunătățirea redării alertelor în cazul modificărilor.

  • A fost adăugat un nou widget de statistici orizontale.

  • A fost îmbunătățită verificarea șirurilor de formate la plural.

  • A fost adăugat un instrument de gestionare a fonturilor.

  • O nouă verificare a dimensiunilor textului redat.

  • A fost adăugat suport pentru formatele de subtitrare.

  • Includeți statisticile generale de finalizare pentru limbi.

  • A fost adăugată raportarea la nivel de proiect și la nivel global.

  • A fost îmbunătățită interfața cu utilizatorul atunci când se afișează starea traducerii.

  • Noul logo Weblate și noua schemă de culori.

  • Noua înfățișare a insignelor bitmap.

Weblate 3.6.1

Lansat pe 26 aprilie 2019.

  • Gestionarea îmbunătățită a fișierelor XLIFF monolingve.

  • A reparat notificările digest în unele cazuri dificile.

  • A fost reparată alerta de eroare a scriptului add-on.

  • A fost reparată generarea fișierului MO pentru fișierele PO monolingve.

  • A fost reparată afișarea verificărilor dezinstalate.

  • Indicați proiectele administrate pe lista de proiecte.

  • Permiteți actualizării să recupereze un depozit VCS lipsă.

Weblate 3.6

Se lansează pe 20 aprilie 2019.

  • Adăugați suport pentru descărcarea datelor utilizatorului.

  • Suplimentele sunt acum declanșate automat la instalare.

  • Instrucțiuni îmbunătățite pentru rezolvarea conflictelor de fuziune.

  • Componenta suplimentară Cleanup este acum compatibilă cu traducerile metadatelor din magazinele de aplicații.

  • Sintaxa codului de limbă configurabilă la adăugarea de noi traduceri.

  • Avertizați cu privire la utilizarea Python 2 cu încetarea planificată a suportului în aprilie 2020.

  • Extrage caracterele speciale din șirul sursă pentru tastatura vizuală.

  • Statisticile contribuitorilor au fost extinse pentru a reflecta atât numărul surselor, cât și cel al țintelor.

  • Administratorii și suplimentele de consistență pot adăuga acum traduceri, chiar dacă acestea sunt dezactivate pentru utilizatori.

  • A fost corectată descrierea comutatorului care dezactivează manipularea antetului Language-Team.

  • Notifică utilizatorii menționați în comentarii.

  • A fost eliminată autodetecția formatului de fișier din configurarea componentelor.

  • A fost reparată generarea fișierului MO pentru fișierele PO monolingve.

  • Au fost adăugate notificări de sinteză.

  • A fost adăugat suport pentru muting-ul notificărilor componentelor.

  • Au fost adăugate notificări pentru noi alerte, mesaje de tablă sau componente.

  • Notificările pentru proiectele administrate pot fi acum configurate.

  • Gestionarea îmbunătățită a codurilor lingvistice de trei litere.

Weblate 3.5.1

Lansat pe 10 martie 2019.

  • Fixat exemplul de unitate Celery systemd.

  • S-a rezolvat problema notificărilor din depozitele HTTP cu autentificare.

  • A fost reparată condiția de rasă în editarea șirului sursă pentru traducerile monolingve.

  • Includeți în jurnale ieșirea de execuție eșuată a add-on-ului.

  • Validarea îmbunătățită a opțiunilor pentru adăugarea unei noi limbi.

  • Permiteți editarea formatului de fișier în setările componentei.

  • Actualizarea instrucțiunilor de instalare pentru a prefera Python 3.

  • Îmbunătățiri de performanță și coerență pentru încărcarea traducerilor.

  • Asigurarea compatibilității serviciului Microsoft Terminology cu versiunile actuale ale Zeep.

  • Actualizări de localizare.

Weblate 3.5

Lansat pe 3 martie 2019.

  • Performanță îmbunătățită a memoriei de traducere încorporate.

  • A fost adăugată o interfață pentru gestionarea memoriei globale de traducere.

  • Alertă îmbunătățită în cazul unei stări proaste a componentelor.

  • A fost adăugată o interfață de utilizator pentru gestionarea mesajelor de pe whiteboard.

  • Mesajul de confirmare al add-on-ului poate fi acum configurat.

  • Reducerea numărului de comenzi la actualizarea depozitului upstream.

  • A fost reparată posibila pierdere de metadate la mutarea componentei între proiecte.

  • Navigare îmbunătățită în modul Zen.

  • Au fost adăugate câteva noi verificări de calitate (legate de Markdown și URL).

  • A fost adăugat suport pentru fișierele de metadate ale magazinului de aplicații.

  • A fost adăugat suport pentru comutarea integrării GitHub sau Gerrit.

  • A fost adăugată o verificare pentru literele Kashida.

  • Adăugată opțiunea de a comprima comenzi pe baza autorilor.

  • Suport îmbunătățit pentru formatul de fișier XLSX.

  • Compatibilitate cu Tesseract 4.0.

  • Suplimentul de facturare elimină acum proiectele pentru facturi neplătite după 45 de zile.

Weblate 3.4

Lansat pe 22 ianuarie 2019.

  • A fost adăugat suport pentru caracterele de poziție XLIFF.

  • Celery poate utiliza acum mai multe cozi de sarcini.

  • A fost adăugat suport pentru redenumirea și mutarea proiectelor și componentelor.

  • Includeți numărul de caractere în rapoarte.

  • A fost adăugată adăugarea ghidată a componentelor de traducere cu detectarea automată a fișierelor de traducere.

  • Mesaje de comisionare a îmbinării personalizabile pentru Git.

  • S-a adăugat indicarea vizuală a alertelor de componente în navigare.

  • Îmbunătățirea performanței de încărcare a fișierelor de traducere.

  • Un nou add-on pentru a distruge comenzi înainte de push.

  • Afișarea îmbunătățită a modificărilor de traducere.

  • A fost schimbat stilul implicit de fuziune în rebase și a devenit configurabil.

  • Gestionarea mai bună a subetichetelor de utilizare privată în codul limbii.

  • Performanța îmbunătățită a actualizărilor indexului fulltext.

  • API de încărcare a fișierelor extins pentru a suporta mai mulți parametri.

Weblate 3.3

Lansat pe 30 noiembrie 2018.

  • A fost adăugat suport pentru eliminarea componentelor și a proiectelor.

  • A fost îmbunătățită performanța pentru unele traduceri monolingve.

  • Au fost adăugate alerte privind componentele de traducere pentru a evidenția problemele legate de o traducere.

  • Expune șirul XLIFF resname ca context atunci când este disponibil.

  • A fost adăugat suport pentru stările XLIFF.

  • A fost adăugată verificarea fișierelor care nu pot fi scrise în DATA_DIR.

  • A fost îmbunătățit exportul CSV pentru modificări.

Weblate 3.2.2

Lansat pe 20 octombrie 2018.

  • Eliminați dependența Babel care nu mai este necesară.

  • Definiții lingvistice actualizate.

  • Îmbunătățirea documentației pentru add-on-uri, LDAP și Celery.

  • A fost reparată activarea noilor indicatori dos-eol și auto-java-messageformat.

  • A fost reparată rularea testului setup.py din pachetul PyPI.

  • Gestionarea pluralului a fost îmbunătățită.

  • A fost reparat eșecul API de încărcare a traducerilor în unele cazuri dificile.

  • S-a reparat actualizarea configurației Git în cazul în care aceasta a fost modificată manual.

Weblate 3.2.1

Lansat pe 10 octombrie 2018.

  • Documentați dependența de backports.csv în Python 2.7.

  • Corectează rularea testelor sub root.

  • A fost îmbunătățită gestionarea erorilor în modulul gitexport.

  • A fost reparată raportarea progresului pentru limbile nou adăugate.

  • Raportați corect erorile lucrătorului Celery către Sentry.

  • Fixat crearea de noi traduceri cu Qt Linguist.

  • A reparat eșecurile ocazionale de actualizare a indexului fulltext.

  • Validare îmbunătățită la crearea de noi componente.

  • A fost adăugat suport pentru curățarea sugestiilor vechi.

Weblate 3.2

Lansat pe 6 octombrie 2018.

  • Adăugați comanda de gestionare install_addon pentru instalarea automată a add-on-urilor.

  • Permiterea unor setări mai fine ale limitei de ratelimit.

  • A fost adăugat suport pentru exportul și importul de fișiere Excel.

  • Îmbunătățirea curățării componentelor în cazul în care există mai multe add-on-uri de descoperire a componentelor.

  • Backend de traducere automată Microsoft Terminology rescris.

  • Weblate folosește acum Celery pentru a descărca o parte din procesare.

  • Au fost îmbunătățite capacitățile de căutare și a fost adăugată căutarea prin expresii regulate.

  • A fost adăugat suport pentru traducerea automată Youdao Zhiyun API.

  • A fost adăugat suport pentru traducerea automată Baidu API.

  • Sarcini integrate de întreținere și curățare folosind Celery.

  • Performanța de încărcare a traducerilor a fost îmbunătățită cu aproape 25%.

  • A fost eliminat suportul pentru îmbinarea antetelor la încărcare.

  • A fost eliminat suportul pentru mesaje de confirmare personalizate.

  • Mod de editare configurabil (zen/full).

  • A fost adăugat suport pentru raportarea erorilor la Sentry.

  • A fost adăugat suport pentru actualizarea zilnică automată a depozitelor.

  • A fost adăugat suport pentru crearea de proiecte și componente de către utilizatori.

  • Memoria de traducere încorporată stochează acum automat traducerile efectuate.

  • Utilizatorii și proiectele își pot importa memoriile de traducere existente.

  • O mai bună gestionare a șirurilor de caractere conexe pentru capturi de ecran.

  • A fost adăugat suport pentru verificarea Java MessageFormat.

Consultați 3.2 milestone pe GitHub pentru lista detaliată a problemelor rezolvate.

Weblate 3.1.1

Lansat pe 27 iulie 2018.

  • Corectarea eșecului testsuite pe unele configurații.

Weblate 3.1

Lansat pe 27 iulie 2018.

  • Actualizările de la o versiune mai veche decât 3.0.1 nu sunt acceptate.

  • Permiteți să suprascrieți mesajele de confirmare implicite din setări.

  • Îmbunătățirea compatibilității webhooks cu mediile găzduite de sine stătător.

  • A fost adăugat suport pentru Amazon Translate.

  • Compatibilitate cu Django 2.1.

  • Verificările de sistem Django sunt acum folosite pentru a diagnostica problemele de instalare.

  • A fost eliminat suportul pentru serviciul libravatar oprit în curând.

  • Un nou add-on pentru a marca traducerile neschimbate ca necesitând editare.

  • Adăugați suport pentru a sări la o anumită locație în timpul traducerii.

  • Traducerile descărcate pot fi acum personalizate.

  • Calcularea îmbunătățită a similarității șirurilor de caractere în cazul corespondențelor din memoria de traducere.

  • A fost adăugat suportul pentru a semna cu GnuPG pentru a semna comenzi Git.

Weblate 3.0.1

Lansat pe 10 iunie 2018.

  • S-a rezolvat o posibilă problemă de migrare de la versiunea 2.20.

  • Actualizări de localizare.

  • Eliminat exemple de cârlige învechite.

  • A fost îmbunătățită documentația privind memoria cache.

  • A fost reparată afișarea documentației de administrare.

  • Gestionarea îmbunătățită a numelor lungi de limbi.

Weblate 3.0

Lansat pe 1 iunie 2018.

  • Controlul accesului rescris.

  • Mai multe curățări de cod care au dus la mutarea și redenumirea modulelor.

  • Un nou add-on pentru descoperirea automată a componentelor.

  • Comanda de management import_project are acum parametri ușor diferiți.

  • A fost adăugat suportul de bază pentru fișierele Windows RC.

  • Un nou add-on pentru a stoca numele contribuabililor în anteturile fișierelor PO.

  • Scripturile cu hook-uri pentru fiecare componentă sunt eliminate, utilizați în schimb add-on-uri.

  • Adăugați suport pentru colectarea acordurilor de colaborare.

  • Modificările de control al accesului sunt acum urmărite în istoric.

  • Un nou add-on pentru a vă asigura că toate componentele unui proiect au aceleași traduceri.

  • Suport pentru mai multe variabile în șabloanele de mesaje de confirmare.

  • Adăugați suport pentru furnizarea unui context textual suplimentar.

Seria Weblate 2.x

Weblate 2.20

Lansat pe 4 aprilie 2018.

  • A fost îmbunătățită viteza de clonare a depozitelor de subversiune.

  • A fost modificată blocarea depozitului pentru a utiliza o bibliotecă terță parte.

  • A fost adăugat suport pentru descărcarea numai a șirurilor care necesită acțiune.

  • A fost adăugat suport pentru căutarea în mai multe limbi în același timp.

  • Un nou add-on pentru a configura înfășurarea ieșirii gettext.

  • Un nou add-on pentru a configura formatarea JSON.

  • A fost adăugat suport pentru autentificare în API folosind autentificarea Bearer compatibilă cu RFC 6750.

  • A fost adăugat suport pentru autentificare în API folosind autentificarea Bearer compatibilă cu RFC 6750.

  • A fost adăugat suport pentru marcare HTML în mesajele de whiteboard.

  • A fost adăugat suport pentru schimbarea în masă a stării șirurilor de caractere.

  • Translate-toolkit cel puțin 2.3.0 este acum necesar, versiunile mai vechi nu mai sunt acceptate.

  • A fost adăugată memoria de traducere încorporată.

  • A fost adăugată prezentarea generală a listelor de componente la tabloul de bord și la paginile de prezentare generală a listei de componente.

  • A fost adăugat suport pentru serviciul de traducere automată DeepL.

  • Rezultatele traducerii automate sunt acum stocate în memoria cache în Weblate.

  • A fost adăugat suport pentru reordonarea modificărilor confirmate.

Weblate 2.19.1

Lansat pe 20 februarie 2018.

  • S-a rezolvat o problemă de migrare la actualizarea de la 2.18.

  • A fost îmbunătățită validarea API de încărcare a fișierelor.

Weblate 2.19

Lansat pe 15 februarie 2018.

  • Importuri fixe în anumite formate de fișiere.

  • Afișarea informațiilor despre browser în jurnalul de audit.

  • A fost adăugat exportatorul TMX pentru fișiere.

  • Diverse îmbunătățiri de performanță pentru încărcarea fișierelor de traducere.

  • A fost adăugată opțiunea de a dezactiva managementul accesului în Weblate în favoarea celui din Django.

  • Viteza de căutare a glosarului a fost îmbunătățită pentru șirurile de caractere mari.

  • Compatibilitate cu django_auth_ldap 1.3.0.

  • Erorile de configurare sunt acum stocate și raportate în mod persistent.

  • Respectați indicatoarele de ignorare în autofixarea spațiilor albe.

  • A fost îmbunătățită compatibilitatea cu unele configurații Subversion.

  • Îmbunătățirea serviciului de traducere automată încorporat.

  • A fost adăugat suport pentru serviciul SAP Translation Hub.

  • A fost adăugat suport pentru serviciul Microsoft Terminology.

  • A fost eliminat suportul pentru reclame în e-mailurile de notificare.

  • Îmbunătățirea raportării progresului traducerii la nivel de limbă.

  • Suport îmbunătățit pentru diferite formule de plural.

  • A fost adăugat suport pentru depozitele Subversion care nu utilizează stdlayout.

  • Adăugat add-on-uri pentru a personaliza fluxurile de lucru de traducere.

Weblate 2.18

Lansat pe 15 decembrie 2017.

  • Statistici extinse ale colaboratorilor.

  • A fost îmbunătățită configurarea tastaturii virtuale cu caractere speciale.

  • A fost adăugat suport pentru formatul de fișier DTD.

  • Schimbat comenzi rapide de la tastatură pentru a evita coliziunea cu cele din browser/sistem.

  • Suport îmbunătățit pentru indicatorul aprobat în fișierele XLIFF.

  • A fost adăugat suportul pentru a nu înfășura șiruri lungi în fișierele gettext PO.

  • A fost adăugat un buton pentru a copia permalink pentru traducerea curentă.

  • A renunțat la suportul pentru Django 1.10 și a adăugat suport pentru Django 2.0.

  • A fost eliminată blocarea traducerilor în timpul traducerii.

  • A fost adăugat suport pentru adăugarea de noi șiruri de caractere la traducerile monolingve.

  • A fost adăugat suport pentru fluxurile de lucru de traducere cu revizori dedicați.

Weblate 2.17.1

Lansat pe 13 octombrie 2017.

  • A fost reparată rularea suitei de testare în anumite situații specifice.

  • Actualizări locale.

Weblate 2.17

Lansat pe 13 octombrie 2017.

  • Weblate, în mod implicit, face acum clone Git superficiale.

  • Performanță îmbunătățită la actualizarea fișierelor de traducere mari.

  • A fost adăugat suport pentru blocarea anumitor e-mailuri de la înregistrare.

  • Utilizatorii își pot șterge acum propriile comentarii.

  • A fost adăugată etapa de previzualizare la funcția de căutare și înlocuire.

  • Persistența pe partea clientului a setărilor în formularele de căutare și încărcare.

  • Capacități de căutare extinse.

  • Configurație ACL mai fină pentru fiecare proiect.

  • Valoarea implicită a lui BASE_DIR a fost modificată.

  • S-a adăugat eliminarea contului în doi pași pentru a preveni eliminarea accidentală.

  • Setările de control al accesului la proiect sunt acum editabile.

  • A fost adăugată protecția opțională împotriva spam-ului pentru sugestiile care utilizează Akismet.

Weblate 2.16

Lansat pe 11 august 2017.

  • Diverse îmbunătățiri de performanță.

  • A fost adăugat suport pentru formatul JSON imbricate.

  • A fost adăugat suport pentru formatul JSON WebExtension.

  • A fost reparată autentificarea exportatorului git.

  • Import CSV îmbunătățit în anumite situații.

  • A fost îmbunătățit aspectul widget-ului Alte traduceri.

  • Verificările privind lungimea maximă impun acum lungimea textului din formular.

  • Faceți ca vârsta commit_pending să fie configurabilă pentru fiecare componentă.

  • Diferite curățări ale interfeței utilizatorului.

  • A fost reparată căutarea de traduceri la nivel de componentă/proiect/site.

Weblate 2.15

Lansat pe 30 iunie 2017.

  • Arată mai multe traduceri înrudite în alte traduceri.

  • Adăugați opțiunea de a vedea traducerile șirului curent în alte limbi.

  • Utilizați în mod implicit 4 forme de plural pentru lituaniană.

  • Încărcare fixă pentru fișiere monolingve de format diferit.

  • Mesaje de eroare îmbunătățite în cazul unei autentificări eșuate.

  • Păstrați starea paginii atunci când scoateți un cuvânt din glosar.

  • A fost adăugat un link direct pentru a edita traducerea în limba secundară.

  • A fost adăugată verificarea calității formatului Perl.

  • A fost adăugat suport pentru respingerea parolelor refolosite.

  • Bara de instrumente extinsă pentru editarea limbilor RTL.

Weblate 2.14.1

Lansat pe 24 mai 2017.

  • S-a remediat o posibilă eroare la paginarea rezultatelor căutării.

  • A fost reparată migrarea de la versiuni mai vechi în unele cazuri dificile.

  • A fost reparat un posibil CSRF la urmărirea și desfacerea proiectelor.

  • Resetarea parolei nu mai autentifică utilizatorul.

  • A fost reparată posibila ocolire CAPTCHA în cazul parolei uitate.

Weblate 2.14

Lansat pe 17 mai 2017.

  • Adăugați intrări în glosar utilizând AJAX.

  • Deconectarea utilizează acum POST pentru a evita CSRF.

  • Resetarea token-ului cheie API folosește acum POST pentru a evita CSRF.

  • Weblate setează în mod implicit Content-Security-Policy.

  • URL-ul editorului local este validat pentru a evita auto-XSS.

  • Parola este acum validată în mod implicit împotriva defectelor comune.

  • Notificarea utilizatorilor cu privire la activități importante legate de contul lor, cum ar fi schimbarea parolei.

  • Exporturile CSV scapă acum de formulele potențiale.

  • Diverse îmbunătățiri minore în materie de securitate.

  • Încercările de autentificare sunt acum limitate în funcție de viteză.

  • Conținutul sugestiilor este stocat în istoric.

  • Stocați activitatea importantă a contului în jurnalul de audit.

  • Cereți confirmarea parolei atunci când eliminați un cont sau adăugați noi asociații.

  • Afișați ora la care a fost făcută sugestia.

  • Există o nouă verificare a calității pentru punctul și virgula de la sfârșit.

  • Asigurați-vă că linkurile de căutare pot fi partajate.

  • A inclus informații despre șirul sursă și capturi de ecran în API.

  • Permiteți să suprascrieți traducerile prin încărcarea API.

Weblate 2.13.1

Lansat pe 12 aprilie 2017.

  • A fost reparată lista de proiecte gestionate în profil.

  • S-a rezolvat o problemă de migrare în care lipseau unele permisiuni.

  • A fost reparată listarea formatului de fișier curent în descărcarea traducerilor.

  • Returnează HTTP 404 la încercarea de a accesa un proiect pentru care utilizatorul nu are privilegii.

Weblate 2.13

Lansat pe 12 aprilie 2017.

  • Verificări fixe ale calității la șabloanele de traducere.

  • A fost adăugată verificarea calității pentru a se declanșa la pierderea traducerii.

  • Adăugați opțiunea de vizualizare a sugestiilor în așteptare de la utilizator.

  • Adăugați opțiunea de a crea automat liste de componente.

  • Tabloul de bord implicit pentru utilizatorii neautentificați poate fi configurat.

  • Adăugați opțiunea de a răsfoi 25 de șiruri aleatorii pentru revizuire.

  • Istoria indică acum o schimbare de șir.

  • O mai bună raportare a erorilor la adăugarea unei noi traduceri.

  • A fost adăugată căutarea pe limbă în cadrul proiectului.

  • ACL-urile de grup pot fi acum limitate la anumite permisiuni.

  • ALC-urile pentru fiecare proiect sunt acum implementate folosind ACL de grup.

  • A fost adăugat un control mai fin al privilegiilor.

  • Diverse îmbunătățiri minore ale interfeței de utilizare.

Weblate 2.12

Lansat pe 3 martie 2017.

  • Interfață de administrare îmbunătățită pentru grupuri.

  • A fost adăugat suport pentru Yandex Translate API.

  • Îmbunătățirea vitezei de căutare la nivelul întregului site.

  • A fost adăugată căutarea la nivel de proiect și de componentă.

  • A fost adăugată funcția de căutare și înlocuire la nivel de proiect și de componentă.

  • Îmbunătățirea redării traducerilor incoerente.

  • A fost adăugat suport pentru deschiderea fișierelor sursă în editorul local.

  • A fost adăugat suport pentru configurarea tastaturii vizuale cu caractere speciale.

  • Gestionarea îmbunătățită a capturilor de ecran cu suport OCR pentru potrivirea șirurilor sursă.

  • Mesajul de confirmare implicit include acum informații despre traducere și adresa URL.

  • A fost adăugat suport pentru formatul de traducere Joomla.

  • Îmbunătățirea fiabilității importului în diferite formate de fișiere.

Weblate 2.11

Lansat pe 31 ianuarie 2017.

  • Includeți informații detaliate despre limbă pe pagina de limbă.

  • Îmbunătățiri ale backend-ului Mercurial.

  • A fost adăugată opțiunea de a specifica prioritatea componentelor de traducere.

  • O utilizare mai consecventă a ACL de grup chiar și în cazul permisiunilor mai puțin utilizate.

  • A fost adăugată variabila WL_BRANCH la scripturile hook.

  • Documentație îmbunătățită pentru dezvoltatori.

  • Compatibilitate mai bună cu diferite versiuni Git în add-on-ul exportator Git.

  • Statistici incluse pentru fiecare proiect și componentă.

  • A fost adăugată cartografierea codurilor de limbă pentru o mai bună compatibilitate cu Microsoft Translate API.

  • Am mutat curățarea textului complet la o sarcină de fundal pentru a face eliminarea traducerilor mai rapidă.

  • Afișarea corectă a sursei pluralului pentru limbile cu o singură formă de plural.

  • A fost îmbunătățită gestionarea erorilor în import_project.

  • Diverse îmbunătățiri de performanță.

Weblate 2.10.1

Lansat pe 20 ianuarie 2017.

  • Nu scurgeți existența contului pe formularul de resetare a parolei (CVE-2017-5537).

Weblate 2.10

Lansat pe 15 decembrie 2016.

  • A fost adăugată o verificare a calității pentru a verifica dacă pluralul este tradus diferit.

  • Corectarea hook-urilor GitHub pentru depozite cu autentificare.

  • A fost adăugat modulul opțional Git exporter.

  • Suport pentru Microsoft Cognitive Services Translator API.

  • Interfață de utilizator simplificată pentru proiecte și componente.

  • A fost adăugată o corecție automată pentru a elimina caracterele de control.

  • A fost adăugată o prezentare generală per limbă la proiect.

  • A fost adăugat suport pentru exportul CSV.

  • A fost adăugată descărcarea CSV pentru statistici.

  • A fost adăugată vizualizarea matricei pentru o prezentare rapidă a tuturor traducerilor.

  • S-a adăugat API de bază pentru modificări și șiruri de caractere.

  • A fost adăugat suport pentru serverul Apertium APy pentru traduceri automate.

Weblate 2.9

Lansat pe 4 noiembrie 2016.

  • Parametrii extinși pentru comanda de gestionare createadmin.

  • Am extins import_json pentru a putea fi gestionat cu componentele existente.

  • A fost adăugat suport pentru fișierele YAML.

  • Proprietarii de proiecte pot configura acum componenta de traducere și detaliile proiectului.

  • Utilizați proiectele „Urmărite” în loc de „Abonate”.

  • Proiectele pot fi urmărite direct din pagina de proiect.

  • A fost adăugat un widget de stare în mai multe limbi.

  • Evidențiați limba secundară dacă nu se indică sursa.

  • Ștergerea sugestiei de înregistrare în istoric.

  • Îmbunătățirea UX a selecției limbilor în profil.

  • A fost reparată afișarea mesajelor de whiteboard pentru componentă.

  • Păstrați fila Preferințe selectată după salvare.

  • Afișați mai vizibil comentariul șirului sursă.

  • Instalarea automată a driverului de fuziune Gettext PO pentru depozitele Git.

  • A fost adăugată funcția de căutare și înlocuire.

  • A fost adăugat suport pentru încărcarea contextului vizual (capturi de ecran) pentru traduceri.

Weblate 2.8

Lansat pe 31 august 2016.

  • Îmbunătățirea documentației.

  • Traduceri.

  • Updated bundled JavaScript libraries.

  • A fost adăugată comanda de gestionare list_translators.

  • Django 1.8 nu mai este suportat.

  • A fost reparată compatibilitatea cu Django 1.10.

  • A fost adăugat suport pentru Subversion.

  • Separarea verificării validității XML de etichetele XML necorespunzătoare.

  • S-a reparat API pentru a onora setările HIDE_REPO_CREDENTIALS.

  • Afișează schimbarea sursei în modul Zen.

  • Alt+PageUp/PageDown/Home/End funcționează acum și în modul Zen.

  • Adăugați un tooltip care arată ora exactă a modificărilor.

  • Adăugați opțiunea de selectare a filtrelor și de căutare din pagina de traducere.

  • A fost adăugată o interfață pentru eliminarea traducerilor.

  • A fost îmbunătățit comportamentul la inserarea de obiecte care pot fi plasate.

  • Au fost rezolvate problemele de blocare automată în modul Zen.

Weblate 2.7

Lansat pe 10 iulie 2016.

  • Eliminat Google web translate traducere automată.

  • A fost îmbunătățit mesajul de confirmare la adăugarea unei traduceri.

  • A fost reparat API-ul Google Translate pentru limba ebraică.

  • Compatibilitate cu Mercurial 3.8.

  • A fost adăugată comanda de gestionare import_json.

  • Ordonarea corectă a traducerilor enumerate.

  • Afișați textul complet al sugestiei, nu doar o diferență.

  • Extinderea API (stare detaliată a depozitului, statistici, …).

  • Testsuite nu mai necesită acces în rețea la depozitele de teste.

Weblate 2.6

Lansat pe 28 aprilie 2016.

  • A fost reparată validarea componentelor cu filtru de limbă.

  • Suport îmbunătățit pentru fișierele XLIFF.

  • A fost reparată traducerea automată pentru sursele care nu sunt în limba engleză.

  • A fost adăugat API REST.

  • Compatibilitate cu Django 1.10.

  • Au fost adăugate categorii la mesajele de pe tablă.

Weblate 2.5

Lansat pe 10 martie 2016.

  • A fost reparată traducerea automată pentru proprietarii de proiecte.

  • Îmbunătățirea performanțelor operațiunilor de confirmare și împingere.

  • O nouă comandă de gestionare pentru a adăuga sugestii din linia de comandă.

  • A fost adăugat suport pentru fuzionarea comentariilor la încărcarea fișierelor.

  • A fost adăugat suport pentru unele extensii GNU la formatul C printf.

  • Îmbunătățirea documentației.

  • A fost adăugat suport pentru generarea de credite pentru traducători.

  • A fost adăugat suport pentru generarea de statistici pentru colaboratori.

  • Căutarea la nivelul întregului site poate căuta doar într-o singură limbă.

  • Îmbunătățirea controalelor de calitate pentru armeană.

  • Suport pentru pornirea componentelor de traducere fără traduceri existente.

  • Suport pentru adăugarea de noi traduceri în Qt TS.

  • Suport îmbunătățit pentru traducerea fișierelor PHP.

  • Îmbunătățirea performanțelor pentru controalele de calitate.

  • A fost reparată căutarea la nivelul întregului site pentru verificările eșuate.

  • A fost adăugată opțiunea de a specifica limba sursă.

  • Suport îmbunătățit pentru fișierele XLIFF.

  • Lista extinsă de opțiuni pentru import_project.

  • Îmbunătățirea direcționării pentru mesajele de tablă albă.

  • Suport pentru traducerea automată între proiecte.

  • Index de căutare fulltext optimizat.

  • A fost adăugată comanda de gestionare a traducerii automate.

  • Adăugat evidențierea locurilor.

  • Au fost adăugate comenzi rapide de la tastatură pentru traduceri automate, verificări și traduceri automate.

  • A fost îmbunătățită blocarea traducerilor.

  • A fost adăugată verificarea calității pentru interpolarea AngularJS.

  • Au fost adăugate ACL-uri extinse bazate pe grupuri.

  • A fost clarificată terminologia privind șirurile de caractere care necesită editare (anterior fuzzy).

  • A fost clarificată terminologia referitoare la șirurile care necesită acțiune și la șirurile care nu sunt traduse.

  • Suport pentru Python 3.

  • A renunțat la suportul pentru Django 1.7.

  • S-a renunțat la dependența de msginit pentru crearea de noi fișiere gettext PO.

  • Au fost adăugate vizualizări configurabile ale tabloului de bord.

  • Notificări îmbunătățite privind erorile de analiză.

  • A fost adăugată opțiunea de a importa componente cu nume duplicat la import_project.

  • Suport îmbunătățit pentru traducerea fișierelor PHP.

  • A fost adăugat exportul XLIFF pentru dicționar.

  • A fost adăugat exportul XLIFF și gettext PO pentru toate traducerile.

  • Îmbunătățirea documentației.

  • A fost adăugat suport pentru atribuirile automate configurabile de grupuri.

  • A fost îmbunătățită adăugarea de noi traduceri.

Weblate 2.4

Lansat pe 20 septembrie 2015.

  • Suport îmbunătățit pentru fișierele PHP.

  • Posibilitatea de a adăuga ACL la un utilizator anonim.

  • A fost îmbunătățită capacitatea de configurare a comenzii import_project.

  • A fost adăugată descărcarea CSV a istoricului.

  • Evitați erorile de copy/paste cu ajutorul caracterelor de spații albe.

  • A fost adăugat suport pentru Bitbucket webhooks.

  • Un control mai riguros asupra șirurilor de caractere neclare la încărcarea traducerilor.

  • S-au schimbat mai multe URL-uri, este posibil să trebuiască să vă actualizați marcajele.

  • Scripturile Hook sunt executate cu rădăcina VCS ca director curent.

  • Scripturile Hook sunt executate cu variabile de mediu care descriu componenta curentă.

  • Adăugați o comandă de gestionare pentru a optimiza indexul fulltext.

  • A fost adăugat suport pentru raportarea erorilor la Rollbar.

  • Proiectele pot avea acum mai mulți proprietari.

  • Proprietarii de proiecte se pot gestiona singuri.

  • A fost adăugat suport pentru javascript-format utilizat în gettext PO.

  • Suport pentru adăugarea de noi traduceri în XLIFF.

  • A fost îmbunătățită autodetecția formatului de fișier.

  • Comenzi rapide de la tastatură extinse.

  • A fost îmbunătățită potrivirea dicționarelor pentru mai multe limbi.

  • A fost îmbunătățit aspectul majorității paginilor.

  • Suport pentru adăugarea de cuvinte în dicționar în timpul traducerii.

  • A fost adăugat suport pentru filtrarea limbilor care urmează să fie gestionate de Weblate.

  • A fost adăugat suport pentru traducerea și importul de fișiere CSV.

  • Gestionarea rescrisă a fișierelor statice.

  • Legături directe de conectare/înregistrare la un serviciu terț, dacă acesta este singurul.

  • Angajați modificările în așteptare la eliminarea contului.

  • Adăugați comanda de gestionare pentru a schimba numele site-ului.

  • Adăugați opțiunea de a configura angajamentul implicit.

  • Adăugați un hook după adăugarea unei noi traduceri.

  • Adăugați opțiunea de a specifica mai multe fișiere pentru a le adăuga la confirmare.

Weblate 2.3

Lansat pe 22 mai 2015.

  • A renunțat la suportul pentru Django 1.6 și migrațiile South.

  • Suport pentru adăugarea de noi traduceri atunci când se utilizează fișiere Java Property.

  • Permiteți să acceptați sugestia fără a o modifica.

  • Suport îmbunătățit pentru Google OAuth 2.0.

  • A fost adăugat suport pentru fișierele Microsoft .resx.

  • Ajustat robots.txt implicit pentru a nu permite o căutare mare a traducerilor.

  • Flux de lucru simplificat pentru acceptarea sugestiilor.

  • Au fost adăugați proprietari de proiecte care primesc întotdeauna notificări importante.

  • Permiteți să dezactivați editarea șablonului monolingv.

  • Vizualizare mai detaliată a stării depozitului.

  • Link direct pentru editarea șablonului atunci când se schimbă traducerea.

  • Permiteți să adăugați mai multe permisiuni proprietarilor de proiecte.

  • Permiteți afișarea limbii secundare în modul Zen.

  • Suport pentru ascunderea șirului sursă în favoarea limbii secundare.

Weblate 2.2

Lansat pe 19 februarie 2015.

  • Îmbunătățiri de performanță.

  • Căutare fulltext pe câmpuri de locație și comentarii.

  • New SVG/JavaScript-based activity charts.

  • Suport pentru Django 1.8.

  • Suport pentru ștergerea comentariilor.

  • Adăugat propria insignă SVG.

  • A fost adăugat suport pentru Google Analytics.

  • Gestionarea îmbunătățită a numelor de fișiere de traducere.

  • A fost adăugat suport pentru traducerile JSON monolingve.

  • Înregistrează blocarea componentelor într-un istoric.

  • Suport pentru editarea limbii sursă (șablon) pentru traducerile monolingve.

  • A fost adăugat suportul de bază pentru Gerrit.

Weblate 2.1

Lansat pe 5 decembrie 2014.

  • A fost adăugat suport pentru depozitele Mercurial.

  • Înlocuirea fontului Glyphicon cu Awesome.

  • Au fost adăugate pictograme pentru serviciile de autentificare socială.

  • O mai bună coerență a culorilor și pictogramelor butoanelor.

  • Îmbunătățirea documentației.

  • Diverse corecturi de erori.

  • Ascunderea automată a coloanelor în lista de traduceri pentru ecrane mici.

  • A fost modificată configurația căilor sistemului de fișiere.

  • Gestionarea și stocarea îmbunătățită a cheilor SSH.

  • Blocare îmbunătățită a depozitului.

  • Verificări de calitate personalizabile pentru fiecare șir de surse.

  • Permiteți să ascundeți traducerile finalizate din tabloul de bord.

Weblate 2.0

Lansat pe 6 noiembrie 2014.

  • O nouă interfață de utilizator receptivă folosind Bootstrap.

  • Backend VCS rescris.

  • Îmbunătățirea documentației.

  • A fost adăugată Whiteboard pentru mesajele de pe site.

  • Prioritate configurabilă a șirurilor.

  • A fost adăugat suport pentru formatul de fișier JSON.

  • A fost reparată generarea de fișiere mo în anumite cazuri.

  • A fost adăugat suport pentru notificările GitLab.

  • A fost adăugat suport pentru dezactivarea sugestiilor de traducere.

  • Suport pentru Django 1.7.

  • Proiectele ACL au acum un sistem de gestionare a utilizatorilor.

  • Posibilități de căutare extinse.

  • Oferiți mai multe indicații traducătorilor cu privire la plural.

  • A fost reparată blocarea depozitelor Git.

  • Compatibilitate cu versiunile Git mai vechi.

  • Suport ACL îmbunătățit.

  • Au fost adăugate butoane pentru ghilimele per limbă și alte caractere speciale.

  • Suport pentru exportul statisticilor ca JSONP.

Seria Weblate 1.x

Weblate 1.9

Lansat pe 6 mai 2014.

  • Compatibilitate cu Django 1.6.

  • Nu se mai menține compatibilitatea cu Django 1.4.

  • Comenzi de gestionare pentru blocarea/ deblocarea traducerilor.

  • Suport îmbunătățit pentru fișierele Qt TS.

  • Utilizatorii își pot șterge acum contul.

  • Avatarul poate fi dezactivat.

  • A fuzionat atributele numelui și prenumelui.

  • Avatarurile sunt acum preluate și stocate în memoria cache pe server.

  • A fost adăugat suport pentru insigna shields.io.

Weblate 1.8

Lansat pe 7 noiembrie 2013.

  • Vă rugăm să consultați manualul pentru instrucțiuni de actualizare.

  • O listă mai frumoasă a rezumatului proiectului.

  • Opțiuni mai vizibile pentru partajare.

  • Mai mult control asupra privilegiilor utilizatorilor anonimi.

  • Suportă autentificarea cu ajutorul unor servicii terțe, consultați manualul pentru mai multe detalii.

  • Utilizatorii se pot autentifica prin e-mail în loc de nume de utilizator.

  • Îmbunătățirea documentației.

  • Revizuirea îmbunătățită a șirurilor sursă.

  • Căutarea în toate șirurile de caractere.

  • O mai bună urmărire a șirurilor de caractere sursă.

  • Protecție Captcha pentru înregistrare.

Weblate 1.7

Lansat pe 7 octombrie 2013.

  • Vă rugăm să consultați manualul pentru instrucțiuni de actualizare.

  • Suport pentru verificarea șirului de format Python brace.

  • Personalizarea pe componente a controalelor de calitate.

  • Statistici detaliate pentru fiecare traducere.

  • A fost modificată modalitatea de asociere a sugestiilor, verificărilor și comentariilor la șiruri de caractere.

  • Utilizatorii pot acum să adauge text la mesajul de angajare.

  • Suport pentru abonarea la cereri de limbi noi.

  • Suport pentru adăugarea de noi traduceri.

  • Widgeturile și graficele sunt acum redate folosind Pillow în loc de Pango + Cairo.

  • Adăugați un widget pentru insigna de stare.

  • S-a renunțat la verificarea direcției textului invalid.

  • Modificările din dicționar sunt acum înregistrate în istoric.

  • Îmbunătățiri de performanță pentru vizualizarea traducerii.

Weblate 1.6

Lansat pe 25 iulie 2013.

  • Gestionarea mai bună a erorilor la înregistrare.

  • Consultarea modificărilor.

  • A fost reparată sortarea sugestiilor de traducere automată.

  • Suport îmbunătățit pentru traducerea automată MyMemory.

  • A fost adăugat suport pentru traducerea automată Amagama.

  • Diverse optimizări pe paginile utilizate frecvent.

  • Fraza căutată în rezultatele căutării.

  • Suport pentru reparații automate în timpul salvării mesajului.

  • Urmărirea istoricului traducerilor și opțiunea de a reveni asupra acestuia.

  • A fost adăugat suport pentru Google Translate API.

  • A fost adăugat suport pentru gestionarea cheilor gazdă SSH.

  • Diverse îmbunătățiri în ceea ce privește validarea formularelor.

  • Diverse îmbunătățiri în ceea ce privește validarea formularelor.

  • Îmbunătățiri de performanță pentru import.

  • A fost adăugat suport pentru votarea sugestiilor.

  • Curățarea interfeței de administrare.

Weblate 1.5

Lansat pe 16 aprilie 2013.

  • Vă rugăm să consultați manualul pentru instrucțiuni de actualizare.

  • Au fost adăugate pagini publice pentru utilizatori.

  • O mai bună denumire a formelor de plural.

  • A fost adăugat suport pentru exportul TBX al glosarului.

  • A fost adăugat suport pentru notificările Bitbucket.

  • Diagramele de activitate sunt acum disponibile pentru fiecare traducere, limbă sau utilizator.

  • Opțiuni extinse ale comenzii import_project admin.

  • Compatibil cu Django 1.5.

  • Avatarurile sunt acum afișate folosind libravatar.

  • A fost adăugată posibilitatea de a imprima frumos exportul JSON.

  • Diverse îmbunătățiri de performanță.

  • Indicați verificările nereușite sau șirurile de caractere neclare în barele de progres pentru proiecte sau limbi, de asemenea.

  • A fost adăugat suport pentru cârlige de precomitere personalizate și comiterea de fișiere suplimentare.

  • Căutare rescrisă pentru o performanță și o experiență mai bună a utilizatorului.

  • O nouă interfață pentru traducerile automate.

  • A fost adăugat suport pentru fișierele po monolingve.

  • Extindeți cantitatea de metadate din memoria cache pentru a îmbunătăți viteza diferitelor căutări.

  • Acum arată și numărul de cuvinte.

Weblate 1.4

Lansat pe 23 ianuarie 2013.

  • S-a reparat ștergerea verificărilor/comentariilor la ștergerea șirurilor de caractere.

  • A fost adăugată opțiunea de a dezactiva propagarea automată a traducerilor.

  • A fost adăugată opțiunea de abonare la eșecurile de fuziune.

  • Import corect în proiectele care au nevoie de încărcător ttkit personalizat.

  • Adăugat sitemaps pentru a permite un acces mai ușor de către crawlere.

  • Furnizați linkuri directe către șir în e-mailurile de notificare sau în fluxuri.

  • Diverse îmbunătățiri la interfața de administrare.

  • Furnizați indicii pentru configurarea producției în interfața de administrare.

  • Adăugat pentru fiecare limbă widget-uri și pagina de angajare.

  • A fost îmbunătățită gestionarea blocării traducerilor.

  • Afișați fragmente de cod pentru widget-uri în mai multe variante.

  • Indicați verificările eșuate sau șirurile neclare în barele de progres.

  • Mai multe opțiuni pentru formatarea mesajului de confirmare.

  • A fost reparată gestionarea erorilor cu serviciile de traducere automată.

  • A fost îmbunătățit comportamentul de blocare automată a traducerilor.

  • Suport pentru afișarea modificărilor față de șirul sursă anterior.

  • A fost adăugat suport pentru căutarea de subșiruri.

  • Diverse îmbunătățiri în ceea ce privește validarea formularelor.

  • Suport pentru ACL pentru fiecare proiect.

  • Acoperirea codului de bază prin teste unitare.

Weblate 1.3

Lansat pe 16 noiembrie 2012.

  • Compatibilitate cu backend-ul bazei de date PostgreSQL.

  • Îndepărtează limbile eliminate în depozitul git din amonte.

  • Procesarea îmbunătățită a controalelor de calitate.

  • Au fost adăugate noi verificări (cod BB, marcaje XML și linii noi).

  • Suport pentru rebasarea opțională în loc de fuziune.

  • Posibilitatea de a relocaliza Weblate (de exemplu, pentru a-l rula în calea /weblate).

  • Suport pentru alegerea manuală a tipului de fișier în cazul în care detecția automată eșuează.

  • Suport mai bun pentru resursele Android.

  • Suport pentru generarea cheii SSH din interfața web.

  • Exporturi de date mai vizibile.

  • Butoane noi pentru introducerea unor caractere speciale.

  • Suport pentru exportul dicționarului.

  • Suport pentru blocarea întregii instalații Weblate.

  • Verifică dacă există șiruri de caractere sursă și suport pentru revizuirea șirurilor de caractere sursă.

  • Suport pentru comentariile utilizatorilor atât pentru traduceri, cât și pentru șirurile sursă.

  • O mai bună urmărire a jurnalului de modificări.

  • Modificările pot fi acum monitorizate prin RSS.

  • Suport îmbunătățit pentru limbile RTL.

Weblate 1.2

Lansat pe 14 august 2012.

  • Weblate folosește acum South pentru migrarea bazei de date, vă rugăm să verificați instrucțiunile de actualizare dacă faceți upgrade.

  • Au fost rezolvate probleme minore cu depozitele git legate.

  • O nouă pagină de introducere pentru a implica oamenii în traducerea cu ajutorul Weblate.

  • Au fost adăugate widget-uri care pot fi folosite pentru promovarea proiectelor de traducere.

  • A fost adăugată opțiunea de resetare a depozitului la origine (pentru utilizatorii privilegiați).

  • Proiectul sau componenta pot fi acum blocate pentru traduceri.

  • Posibilitatea de a dezactiva unele traduceri.

  • Opțiuni configurabile pentru adăugarea de noi traduceri.

  • Configurarea comenzilor git pentru fiecare proiect.

  • Protecție antispam simplă.

  • O mai bună dispunere a paginii principale.

  • Suport pentru împingerea automată a modificărilor la fiecare confirmare.

  • Suport pentru notificări prin e-mail ale traducătorilor.

  • Lista numai limbile utilizate în preferințe.

  • Gestionarea îmbunătățită a limbilor necunoscute atunci când se importă un proiect.

  • Suport pentru blocarea traducerii de către traducător.

  • Opțional, mențineți antetul Language-Team în fișierul po.

  • Includeți câteva statistici în pagina despre.

  • Suportă (și necesită) django-registration 0.8.

  • Stocarea în memoria cache a numărului de șiruri de caractere cu verificări nereușite.

  • Verificarea cerințelor în timpul instalării.

  • Îmbunătățirea documentației.

Weblate 1.1

Lansat pe 4 iulie 2012.

  • Au fost îmbunătățite mai multe traduceri.

  • O mai bună validare în timpul creării componentei.

  • A fost adăugat suport pentru depozite git partajate între componente.

  • Nu este necesar să faceți commit la fiecare încercare de a extrage repo-ul de la distanță.

  • A fost adăugat suport pentru descărcarea indexării.

Weblate 1.0

Lansat pe 10 mai 2012.

  • Validare îmbunătățită la adăugarea/salvarea componentelor.

  • Suport experimental pentru fișierele de componente Android (necesită ttkit corectat).

  • Actualizările din hook-uri sunt executate în fundal.

  • Instrucțiuni de instalare îmbunătățite.

  • Navigare îmbunătățită în dicționar.

Seria Weblate 0.x

Weblate 0.9

Lansat pe 18 aprilie 2012.

  • A fost reparat importul de limbi necunoscute.

  • A fost îmbunătățită listarea mesajelor din apropiere.

  • Au fost îmbunătățite mai multe verificări.

  • Actualizări ale documentației.

  • A fost adăugată o definiție pentru mai multe limbi.

  • Diferite curățări de cod.

  • Îmbunătățirea documentației.

  • A fost modificat aspectul fișierului.

  • Actualizarea scripturilor ajutătoare la Django 1.4.

  • Navigare îmbunătățită în timpul traducerii.

  • O mai bună gestionare a redenumirii fișierelor po.

  • O mai bună validare în timpul creării componentei.

  • Configurație completă integrată în syncdb.

  • A fost adăugată o listă cu modificările recente la toate paginile de traducere.

  • Verificarea șirurilor de caractere netraduse ignoră doar mesajele cu șiruri de format.

Weblate 0.8

Lansat pe 3 aprilie 2012.

  • Înlocuirea propriei căutări de text integral cu Whoosh.

  • Diverse remedieri și îmbunătățiri ale verificărilor.

  • Noua comandă updatechecks.

  • O mulțime de actualizări de traduceri.

  • A fost adăugat un dicționar pentru stocarea celor mai frecvent utilizați termeni.

  • S-a adăugat /admin/report/ pentru o privire de ansamblu asupra stării depozitelor.

  • Serviciile de traducere automată nu mai blochează încărcarea paginilor.

  • Interfața de gestionare conține acum și acțiuni utile pentru actualizarea datelor.

  • Înregistrează jurnalul modificărilor efectuate de utilizatori.

  • Posibilitatea de a amâna confirmarea în Git pentru a genera mai puține confirmări de la un singur utilizator.

  • Posibilitatea de a răsfoi controalele nereușite.

  • Traducerea automată utilizând șiruri de caractere deja traduse.

  • O nouă pagină despre care arată versiunile utilizate.

  • Compatibilitate cu Django 1.4.

  • Posibilitatea de a împinge modificările în repo la distanță din interfața web.

  • A fost adăugată revizuirea traducerilor făcute de alții.

Weblate 0.7

Lansat pe 16 februarie 2012.

  • Suport direct pentru notificările GitHub.

  • A fost adăugat suport pentru curățarea verificărilor și traducerilor abandonate.

  • Afișează șirurile din apropiere în timpul traducerii.

  • Afișează șiruri similare în timpul traducerii.

  • Căutarea îmbunătățită a șirurilor de caractere.

Weblate 0.6

Lansat pe 14 februarie 2012.

  • Au fost adăugate diverse verificări pentru mesajele traduse.

  • Controlul accesului reglabil.

  • Gestionarea îmbunătățită a traducerilor cu linii noi.

  • A fost adăugată sortarea tabelelor pe partea clientului.

  • Vă rugăm să verificați instrucțiunile de actualizare în cazul în care faceți o actualizare.

Weblate 0.5

Lansat pe 12 februarie 2012.

  • Asistență pentru traducere automată utilizând următoarele servicii online:
    • Apertium

    • Traducător Microsoft

    • MemoriaMea

  • Mai multe traduceri noi.

  • Îmbinarea îmbunătățită a modificărilor din amonte.

  • Gestionarea mai bună a tragerii și traducerii simultane în git.

  • Propagarea funcționează și în cazul modificărilor fuzzy.

  • Propagarea funcționează, de asemenea, pentru încărcarea fișierelor.

  • A reparat descărcările de fișiere în timp ce se utilizează FastCGI (și posibil și altele).

Weblate 0.4

Lansat pe 8 februarie 2012.

  • A fost adăugat un ghid de utilizare la documentație.

  • Corectarea cârligelor API pentru a nu necesita protecție CSRF.

Weblate 0.3

Lansat pe 8 februarie 2012.

  • O mai bună afișare a sursei pentru traducerile la plural.

  • Documentație nouă în format Sphinx.

  • Afișează limbile secundare în timpul traducerii.

  • A fost îmbunătățită pagina de eroare pentru a oferi o listă a proiectelor existente.

  • Noi statistici pe limbă.

Weblate 0.2

Lansat pe 7 februarie 2012.

  • Validarea îmbunătățită a mai multor formulare.

  • Avertizează utilizatorii cu privire la actualizarea profilului.

  • Țineți minte URL-ul pentru autentificare.

  • Denumirea zonelor de text la introducerea formelor de plural.

  • Extinderea automată a zonei de traducere.

Weblate 0.1

Lansat pe 6 februarie 2012.

  • Lansarea inițială.

Indici și tabele