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 REUSE status 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

Chat în direct

Live chat despre Weblate este disponibil la Libera.Chat IRC network. Numele canalului este #weblate. Acesta poate fi accesat, de exemplu, prin https://web.libera.chat/#weblate sau printr-un client IRC instalat pe computerul dumneavoastră.

Licență

Copyright © Michal Čihař michal@weblate.org

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

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.

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.

Caractere speciale

Caractere speciale suplimentare de inclus în Tastatura vizuală.

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.

Sugestie

Sending out notifications is limited, you will not receive more than 1000 e-mails per day. Any further notifications for you will be discarded.

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

The commit e-mail will be used instead of your account e-mail in version control commits. Use this to avoid leaking your real e-mail there. Be aware that using different e-mail can disconnect your contributions on other servers (for example your contributions will no longer link to your profile on GitHub). The private e-mail can be turned on site-wide using PRIVATE_COMMIT_EMAIL_OPT_IN.

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 în public

  • 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).

Următoarele etichete sunt utilizate de Weblate:

Tradus automat

Șirul a fost tradus folosind Traducere automată.

Sursa trebuie revizuită

Șirul a fost marcat pentru revizuire folosind Sursa șiruri de recenzii.

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

Traduceri alternative

Nou în versiunea 4.13.

Notă

În prezent, acest lucru este acceptat numai cu Fișier CSV multivaloare.

În cazul anumitor formate, este posibil să existe mai multe traduceri pentru un singur șir de caractere. Puteți adăuga mai multe traduceri alternative folosind meniul Tools. Toate traducerile alternative goale vor fi eliminate automat la salvare.

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

Ctrl+Enter sau

Cmd+Enter

Trimiteți formularul curent; este același lucru cu apăsarea Salvare și continuare în timpul editării traducerii.

Ctrl+Shift+Enter sau

Cmd+Shift+Enter

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

:kbd:`Alt+Enter`sau

Option+Enter

Trimite șirul de caractere ca sugestie; este același lucru cu apăsarea Suggest în timpul editării traducerii.

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

Activați caseta de selectare 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:

_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 Configurarea sugestiilor automate.

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

Șirurile de caractere traduse automat sunt etichetate Automatically translated.

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 încurca șirurile de caratere. Acesta este un proces în doi pași care arată o previzualizare a șirurilor editate înainte ca modificarea reală să fie confirmată.

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 add-on <addon-weblate.flags.bulk>`

Vedere Matrix

Pentru a compara în mod eficient diferite limbi, puteți utiliza vizualizarea matricei. Aceasta este disponibilă pe fiecare pagină a componentei, în meniul Tools. Mai întâi selectați toate limbile pe care doriți să le comparați și confirmați selecția, după care puteți face clic pe orice traducere pentru a o deschide și a o edita rapid.

Vizualizarea matricei este, de asemenea, un punct de plecare foarte bun pentru a găsi traducerile lipsă în diferite limbi și pentru a le adăuga rapid dintr-o singură vizualizare.

Modul Zen

Editorul Zen poate fi activat făcând clic pe butonul Zen din dreapta sus în timp ce traduceți o componentă. Acesta simplifică aspectul și elimină elementele suplimentare ale interfeței de utilizare, cum ar fi Nearby strings sau Glossary.

Puteți selecta editorul Zen ca editor implicit folosind fila Preferințe din Profilul utilizatorului. Aici puteți alege, de asemenea, între a avea traducerile listate Top to bottom sau Side by side, în funcție de preferințele dumneavoastră personale.

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.

Metode de import

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

Adăugați ca traducere (translate)

Șirurile importate sunt adăugate ca traduceri la șirurile existente. 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)

Șirurile de caractere importate sunt adăugate ca sugestii, faceți acest lucru atunci când doriți ca șirurile î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)

Șirurile de caractere 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 de termeni din glosar ca fiind „doar pentru citire” prin editare în bloc, prin tastarea indicatorului sau prin utilizarea ToolsMark as untranslatable î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

Identificatorul de verificare:

bbcode

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

Identificatorul de verificare:

duplicate

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

Identificatorul de verificare:

check_glossary

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

Identificatorul de verificare:

double_space

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`

Identificatorul de verificare:

angularjs_format

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

Identificatorul de verificare:

c_format

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

Identificatorul de verificare:

c_sharp_format

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

Identificatorul de verificare:

es_format

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

Identificatorul de verificare:

i18next_interpolation

Indicator de activare:

i18next-interpolation

Indicator de ignorat:

ignore-i18next-interpolation

Exemplu de interpolare:

Există {{number}} mere

Exemplu de imbricare:

Există $t(number) mere

Format mesaj ICU

Nou în versiunea 4.9.

Sumar:

Erori de sintaxă și/sau nepotriviri de caractere de poziție în șirurile ICU MessageFormat.

Domeniul de aplicare:

șiruri traduse

Verifică clasa:

weblate.checks.icu.ICUMessageFormatCheck

Identificatorul de verificare:

icu_message_format

Indicator de activare:

icu-message-format

Indicator de ignorat:

ignore-icu-message-format

Exemplu de interpolare:

Există {număr, plural, unul {este un măr}, altul {sunt # mere}}.

Această verificare este compatibilă atât cu mesajele pur ICU MessageFormat, cât și cu ICU cu etichete XML simple. Puteți configura comportamentul acestei verificări utilizând icu-flags:*, fie prin optarea pentru suportul XML, fie prin dezactivarea anumitor subverificări. De exemplu, următorul indicator activează suportul XML, dar dezactivează validarea submesajelor cu plural:

icu-message-format, icu-flags:xml:-plural_selectors

xml

Activați suportul pentru etichete XML simple. În mod implicit, etichetele XML sunt analizate simplu. Caracterele < rătăcite sunt ignorate dacă nu fac parte în mod rezonabil dintr-o etichetă.

strict-xml

Activați suportul pentru etichete XML stricte. Toate caracterele < trebuie să fie evitate dacă nu fac parte dintr-o etichetă.

-highlight

Dezactivați evidențierea martorilor de poziție în editor.

-require_other

Dezactivarea cerinței ca mesajele secundare să aibă un selector other.

-submessage_selectors

Treceți peste verificarea faptului că selectorii de submesaj se potrivesc cu sursa.

-types

Treceți peste verificarea faptului că tipurile de caractere de tip placeholder corespund sursei.

-extra

Trece peste verificarea faptului că nu sunt prezente spații libere care nu erau prezente în șirul sursă.

-missing

Trece peste verificarea faptului că nu lipsesc caractere de poziție care erau prezente în șirul sursă.

În plus, atunci când strict-xml nu este activat, dar xml este activat, puteți utiliza indicatorul icu-tag-prefix:PREFIX pentru a solicita ca toate etichetele XML să înceapă cu un anumit șir de caractere. De exemplu, următorul indicator va permite ca etichetele XML să fie comparate numai dacă încep cu <x::

icu-message-format, icu-flags:xml, icu-tag-prefix:"x:"

Acest lucru s-ar potrivi cu <x:link>click aici</x:link>, dar nu cu <strong>aceasta</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

Identificatorul de verificare:

java_printf_format

Indicator de activare:

java-printf-format

Indicator de ignorat:

ignore-java-printf-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

Schimbat în versiunea 4.14: Acest lucru era activat de steagul java-format, dar a fost schimbat pentru coerență cu GNU gettext.

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

Identificatorul de verificare:

java_format

Indicator de activare necodificată:

java-format

Indicator pentru activarea autodetecției:

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

Indicator de ignorat:

ignore-java-format

Exemplu de șir de formate de poziție:

Există {0} mere

Schimbat în versiunea 4.14: Acest lucru era activat de steagul java-messageformat, dar a fost schimbat pentru a fi în concordanță cu GNU gettext.

This check validates that format string is valid for the Java MessageFormat class. Besides matching format strings in the curly braces, it also verifies single quotes as they have a special meaning. Whenever writing single quote, it should be written as ''. When not paired, it is treated as beginning of quoting and will not be shown when rendering the string.

Format JavaScript
Sumar:

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

Domeniul de aplicare:

șiruri traduse

Verifică clasa:

weblate.checks.format.JavaScriptFormatCheck

Identificatorul de verificare:

javascript_format

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

Identificatorul de verificare:

lua_format

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

Identificatorul de verificare:

object_pascal_format

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

Identificatorul de verificare:

percent_placeholders

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

Identificatorul de verificare:

perl_format

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

Identificatorul de verificare:

php_format

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

Identificatorul de verificare:

python_brace_format

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

Identificatorul de verificare:

python_format

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

Identificatorul de verificare:

qt_format

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`

Identificatorul de verificare:

qt_plural_format

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

Identificatorul de verificare:

ruby_format

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

Identificatorul de verificare:

scheme_format

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

Identificatorul de verificare:

vue_format

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

Identificatorul de verificare:

translated

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 este netradus în anumite componente.

Domeniul de aplicare:

toate șirurile de caractere

Verifică clasa:

weblate.checks.consistency.ConsistencyCheck

Identificatorul de verificare:

inconsistent

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.

Această verificare se aplică tuturor componentelor dintr-un proiect care au activată opțiunea Permiteți propagarea traducerii.

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 add-onul 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

Identificatorul de verificare:

kashida

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

Identificatorul de verificare:

md-reflink

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

Identificatorul de verificare:

md-syntax

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

Identificatorul de verificare:

max-length

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.

În cazul în care se utilizează și indicatorul xml-text, calculul lungimii ignoră etichetele XML.

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

Identificatorul de verificare:

max-size

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.

În cazul în care se utilizează și indicatorul xml-text, calculul lungimii ignoră etichetele XML.

Nepotrivit \n

Sumar:

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

Domeniul de aplicare:

șiruri traduse

Verifică clasa:

weblate.checks.chars.EscapedNewlineCountingCheck

Identificatorul de verificare:

escaped_newline

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

Identificatorul de verificare:

end_colon

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

Identificatorul de verificare:

end_ellipsis

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

Identificatorul de verificare:

end_exclamation

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

Identificatorul de verificare:

end_stop

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

Identificatorul de verificare:

end_question

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

Identificatorul de verificare:

end_semicolon

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.

Î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

Identificatorul de verificare:

newline-count

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 sunt netraduse

Domeniul de aplicare:

șiruri traduse

Verifică clasa:

weblate.checks.consistency.PluralsCheck

Identificatorul de verificare:

plurals

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

Identificatorul de verificare:

placeholders

Indicator de activare:

placeholders

Indicator de ignorat:

ignore-placeholders

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

Schimbat în versiunea 4.13: Cu indicatorul case-insensitive, caracterele de poziție nu sunt sensibile la majuscule și minuscule.

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"%[^% ]%"

Puteți avea, de asemenea, marcaje nesensibile la majuscule și minuscule:

placeholders:$URL$:$TARGET$,case-insensitive

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

Identificatorul de verificare:

punctuation_spacing

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

Identificatorul de verificare:

regex

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

Identificatorul de verificare:

same-plurals

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

Identificatorul de verificare:

begin_newline

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

Identificatorul de verificare:

begin_space

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

Identificatorul de verificare:

end_newline

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

Identificatorul de verificare:

end_space

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

Identificatorul de verificare:

same

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

Identificatorul de verificare:

safe-html

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

În cazul în care se utilizează și steagul md-text, sunt permise și legăturile în stil Markdown.

Vezi și

The HTML check is performed by the Ammonia library.

URL

Nou în versiunea 3.5.

Sumar:

Traducerea nu conține un URL

Domeniul de aplicare:

șiruri traduse

Verifică clasa:

weblate.checks.markup.URLCheck

Identificatorul de verificare:

url

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

Identificatorul de verificare:

xml-tags

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`

Identificatorul de verificare:

xml-invalid

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

Identificatorul de verificare:

zero-width-space

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

Identificatorul de verificare:

ellipsis

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.

Sintaxa ICU MessageFormat

Nou în versiunea 4.9.

Sumar:

Erori de sintaxă în șirurile ICU MessageFormat.

Domeniul de aplicare:

șiruri de surse

Verifică clasa:

weblate.checks.icu.ICUSourceCheck

Identificatorul de verificare:

icu_message_format_syntax

Indicator de activare:

icu-message-format

Indicator de ignorat:

ignore-icu-message-format

Vezi și

Format mesaj ICU

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

Identificatorul de verificare:

long_untranslated

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ă care face dificilă traducerea acestuia.

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

Identificatorul de verificare:

multiple_failures

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

Identificatorul de verificare:

unnamed_format

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

Identificatorul de verificare:

optional_plural

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 pe baza șirurilor sursă, țintă și context.

_images/search.png

Domenii

sursa:TEXT

Căutare insensibilă la majuscule și minuscule a șirului sursă.

— țintă:TEXT

Căutare insensibilă la majuscule și minuscule a șirului țintă.

context:TEXT

Căutare insensibilă la majuscule și minuscule a șirului contextual.

key:TEXT

Căutare insensibilă la majuscule și minuscule a șirului de taste.

note:TEXT

Căutare insensibilă la majuscule și minuscule în descrierea șirului sursă.

locație:TEXT

Căutare insensibilă la majuscule și minuscule a șirului de locație.

prioritate:NUMĂR`

Șir de caractere prioritate.

id:NUMBER

String unique identifier.

added:DATETIME

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

stat:TEXT

Căutarea stărilor de șiruri de caractere (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ă șirul de caractere care are atributele - plural, context, sugestie, comentariu, verificare, verificare respinsă, traducere, variantă, captură de ecran, flags, explicație, glosar, notă, etichetă.

este:TEXT

Căutați traduceri în așteptare (pending). Poate căuta, de asemenea, toate stările de șiruri (approved, translated, untranslated, needs-editing, read-only).

limbă:TEXT

Șir de caractere limba țintă.

componenta:TEXT

Căutarea insensibilă la majuscule și minuscule a slug-ului sau a numelui componentei, a se vedea Componenta slug și 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 nereușită, a se vedea Verificări și reparații pentru identificatorii de verificare.

dismissed_check:TEXT

Șirul a respins controlul respins, a se vedea Verificări și reparații pentru identificatorii de control.

comentariu:TEXT

Căutați în comentariile utilizatorilor.

resolved_comment:TEXT`

Căutați în comentariile rezolvate.

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.

etichetă:TEXT

Căutați în etichete.

captură de ecran:TEXT

Căutați în capturi de ecran.

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.

Această stare este disponibilă numai atunci când sunt activate revizuirile.

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 add-on-ul Semnalați traducerile neschimbate ca „Necesită editare” 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

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

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

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

# Open Weblate for translation:
wlc unlock

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

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

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

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

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

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

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

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

# Update Weblate remote:
git remote update weblate

# Merge Weblate changes:
git merge weblate/main

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

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

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

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

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

git merge -s ours origin/maintenance

Cum se traduc proiectele multi-platformă?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    git submodule update --remote path/to/translations
    

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

Cum pot verifica dacă Weblate este configurat corect?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Utilizare

Cum pot revizui traducerile altora?

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

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

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

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

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

Cum pot folosi traducerile existente în timpul traducerii?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Notă

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

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 add-on 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. Este posibil să doriți să folosiți English (Developer) ca limbă sursă sau să utilizați Poartă de calitate pentru șirurile sursă.

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

  • În cazul în care fișierul de traducere pentru limba sursă este necesar, dar ar trebui să fie ignorat de Weblate, vă rugăm să ajustați Filtru 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 solicitări de tracțiune, Gerrit și Subversiune) și Mercurial, dar este posibil să se scrie backend-uri pentru alte VCS-uri.

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

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

Notă

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

Cum creditează Weblate traducătorii?

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

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

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

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

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

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

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

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

Notă

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

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

Capabilities of all supported formats

Formatul

Lingvistică [1]

Pluralurile [2]

Descrieri [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

ambele

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

da

nu

nu

nu

gotext JSON files

mono

da

da

nu

da

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 ResourceDictionary

mono

nu

nu

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

Șiruri de caractere numai pentru citire

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.

Weblate acceptă XLIFF în mai multe variante:

XLIFF fișier de traducere

Fișier XLIFF simplu în care conținutul elementelor este stocat sub formă de text simplu (toate elementele XML sunt evadate).

XLIFF cu suport pentru placeables

XLIFF standard, care acceptă elemente de tip „placeables” și alte elemente XML.

XLIFF cu extensii gettext

XLIFF îmbogățit de XLIFF 1.2 Representation Guide for Gettext PO pentru a suporta pluralul.

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 fișiere – 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

Sugestie

Pentru a evita traducerea unor șiruri de caractere, acestea pot fi marcate ca netranslatabile. Acest lucru poate fi util în special pentru referințele de șiruri de caractere:

<string name="foobar" translatable="false">@string/foo</string>

Șiruri Apple iOS

Format de fișier utilizat de obicei pentru traducerea aplicațiilor Apple iOS, dar și standardizat de PWG 5100.13 și utilizat pe NeXTSTEP/OpenSTEP.

Șirurile de caractere Apple iOS sunt utilizate de obicei ca fiind monolingve.

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.

Schimbat în versiunea 4.15.1: Support for v4 variant of this format was added.

Sugestie

In case you use plurals, it is recommended to use v4 as that aligned plural handling with CLDR. Older versions have different plural rules for some languages which are not correct.

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 supports the i18next JSON v3 and v4 variants. Please choose correct file format matching your environment.

The v2 and v1 variants are mostly compatible with v3, with exception of how plurals are handled.

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 JSON file v3

fișiere JSON go-i18n

Nou în versiunea 4.1.

Schimbat în versiunea 4.16: Support for v2 variant of this format was added.

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 supports the go-i18n JSON v1 and v2 variants. Please choose correct file format matching your environment.

Typical Weblate Configurația componentei for v1

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 v1 JSON file

Typical Weblate Configurația componentei for v2

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 v2 JSON file

gotext JSON files

Nou în versiunea 4.15.1.

gotext translations are monolingual, so it is recommended to specify a base file with (what is most often the) English strings.

Tipic Weblate Configurația componentei

Masca de fișier

internal/translations/locales/*/messages.gotext.json

Fișier de limbă de bază monolingvă

internal/translations/locales/en-GB/messages.gotext.json

Șablon pentru traduceri noi

Gol

Formatul fișierului

gotext JSON file

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": "Orangutan has $coUnT$ bananas",
    "description": "Description",
    "placeholders": {
      "count": {
        "content": "$1",
        "example": "5"
      }
    }
  },
  "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 ResourceDictionary

Nou în versiunea 4.13.

ResourceDictionary este un format de fișier XML monolingv utilizat pentru a împacheta resurse de șiruri de caractere localizabile pentru aplicațiile Windows Presentation Foundation (WPF).

Tipic Weblate Configurația componentei

Masca de fișier

Limbi/*.xaml

Fișier de limbă de bază monolingvă

Limbă/en.xaml

Șablon pentru traduceri noi

Gol

Formatul fișierului

ResurseDicționar de fișiere

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

Sugestie

În mod implicit, formatul CSV detectează automat codificarea fișierelor. Acest lucru poate să nu fie fiabil în unele cazuri particulare și poate cauza pierderi de performanță. Vă rugăm să alegeți o variantă de format de fișier cu codificare pentru a evita acest lucru (de exemplu CSV file (UTF-8)).

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

Fișier CSV multivaloare

Nou în versiunea 4.13.

Această variantă a fișierelor CSV permite stocarea mai multor traduceri per șir.

Vezi și

tt: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

tt: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

tt: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

tt: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

tt: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

tt: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

tt: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

tt: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

tt: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 currently supports Git (with extended support for GitHub solicitări de tracțiune, Cereri de fuziune GitLab, Gitea cereri de pull, Gerrit, Subversiune and Bitbucket Server pull requests) and Mercurial as version control back-ends.

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 add-onuri 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 solicitări de tracțiune

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 solicitări de tracțiune creează cereri de extragere. Acesta din urmă nu este necesar pentru simpla accesare a depozitelor Git.

Trebuie să configurați acreditările API (GITHUB_CREDENTIALS) în setările Weblate pentru ca acest lucru să funcționeze. Odată configurat, veți vedea o opțiune GitHub atunci când selectați Sistem de control al versiunilor.

Cereri de fuziune 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 Cereri de fuziune GitLab creează cereri de fuziune.

Trebuie să configurați acreditările API (GITLAB_CREDENTIALS) în setările Weblate pentru ca acest lucru să funcționeze. Odată configurat, veți vedea o opțiune GitLab atunci când selectați Sistem de control al versiunilor.

Gitea cereri de pull

Nou în versiunea 4.12.

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

Nu este nevoie 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 Gitea cereri de pull creează cereri de pull.

Trebuie să configurați acreditările API (GITEA_CREDENTIALS) în setările Weblate pentru ca acest lucru să funcționeze. Odată configurat, veți vedea o opțiune Gitea atunci când selectați Sistem de control al versiunilor.

Bitbucket Server pull requests

Nou în versiunea 4.16.

This just adds a thin layer atop Git using the Bitbucket Server API to allow pushing translation changes as pull requests instead of pushing directly to the repository.

Atenționare

This does not support Bitbucket Cloud API.

There is no need to use this to access Git repositories, ordinary Git works the same, the only difference is how pushing to a repository is handled. With Git changes are pushed directly to the repository, while Bitbucket Server pull requests creates pull request.

You need to configure API credentials (BITBUCKETSERVER_CREDENTIALS) in the Weblate settings to make this work. Once configured, you will see a Bitbucket Server option when selecting Sistem de control al versiunilor.

Cereri de fuziune 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 Cereri de fuziune Pagure creează cereri de fuziune.

Trebuie să configurați acreditările API (PAGURE_CREDENTIALS) în setările Weblate pentru ca acest lucru să funcționeze. Odată configurat, veți vedea o opțiune Pagure atunci când selectați Sistem de control al versiunilor.

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:

Jetoane de autentificare

Schimbat în versiunea 4.10: Jetoanele cu domeniul de aplicare al proiectului au fost introduse în versiunea 4.10.

Fiecare utilizator are un token de acces personal care poate fi obținut în profilul de utilizator. Token-urile de utilizator nou generate au prefixul wlu_.

Este posibil să se creeze token-uri de proiect pentru accesul la API doar pentru un anumit proiect. Aceste jetoane pot fi identificate prin prefixul wlp_.

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.

În containerul Docker, acest lucru poate fi configurat folosind WEBLATE_API_RATELIMIT_ANON și WEBLATE_API_RATELIMIT_USER.

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)

  • is_bot (boolean) – Este utilizatorul bot? (opțional) (utilizat pentru token-uri de proiect)

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

  • is_bot (boolean) – dacă utilizatorul este bot (utilizat pentru token-uri de proiect)

  • 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,
    "is_bot": false,
    "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

  • is_bot (boolean) – dacă utilizatorul este bot (utilizat pentru token-uri de proiect)

  • 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

  • is_bot (boolean) – dacă utilizatorul este bot (utilizat pentru token-uri de proiect)

  • 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

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

Nou în versiunea 4.13.1.

Eliminați utilizatorul dintr-un grup.

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:
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",
    "defining_project": null,
    "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

  • population (int) – Numărul de vorbitori

  • 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ă

Obiect JSON de cerere:
  • population (int) – Numărul de vorbitori

Exemplu de date JSON:

{
    "code": "en",
    "direction": "ltr",
    "name": "English",
    "population": 159034349015,
    "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

  • population (int) – Numărul de vorbitori

  • 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

  • population (int) – Numărul de vorbitori

  • 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 cerere:
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",
        "name": "Weblate",
        "slug": "weblate",
        "repo": "https://github.com/WeblateOrg/hello.git",
        "template": "",
        "new_base": "po/hello.pot",
        "vcs": "git"
    }' \
    -H "Content-Type: application/json" \
    -H "Authorization: Token TOKEN" \
    http://example.com/api/projects/hello/components/

Cerere JSON pentru a crea o nouă componentă din Git:

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",
    "name": "Weblate",
    "slug": "weblate",
    "repo": "https://github.com/WeblateOrg/hello.git",
    "template": "",
    "new_base": "po/hello.pot",
    "vcs": "git"
}

Cerere JSON pentru a crea o nouă componentă din alta:

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

{
    "file_format": "po",
    "filemask": "po/*.po",
    "name": "Weblate",
    "slug": "weblate",
    "repo": "weblate://weblate/hello",
    "template": "",
    "new_base": "po/hello.pot",
    "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",
             "population": 159034349015,
            "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

Sugestie

Utilizați POST /api/projects/(string:project)/components/ pentru a crea noi 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",
             "population": 159034349015,
            "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",
        "population": 159034349015,
        "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",
            "population": 159034349015,
            "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.

Descarcă toate traducerile disponibile asociate cu componenta sub forma unui fișier de arhivă în formatul solicitat.

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

  • component (string) – Componenta URL slug

Parametrii de interogare:
  • format (string) – Formatul de arhivă care urmează să fie utilizat; Dacă nu este specificat, valoarea implicită este zip; Formate acceptate: 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",
        "population": 1303174280
        "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",
                "population": 159034349015,
                "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",
        "population": 1303174280
        "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.

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 (utilizată ca cheie sau context)

  • value (array) – Șiruri sursă (folosiți un singur șir dacă nu creați plural)

  • state (int) – String state; see GET /api/units/(int:id)/

Obiect JSON de răspuns:
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 – File format to use; if not specified no format conversion happens; supported file formats: po, mo, xliff, xliff11, tbx, tmx, csv, xlsx, json, aresource, strings

  • q (string) – Filter downloaded strings, see Pagină de Căutare, only applicable when conversion is in place (format is specified).

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 conflicts – 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)

Memorie

Nou în versiunea 4.14.

GET /api/memory/

Returnează o listă de rezultate de memorie.

DELETE /api/memory/(int: memory_object_id)/

Șterge un obiect de memorie

Parametrii:
  • memory_object_id – ID-ul obiectului de memorie

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.

Parametrii:
  • q (string) – Șir de interogare pentru căutare Căutare (opțional)

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

  • labels (array) – translation unit labels, available on source units

  • 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

  • source_unit (string) – Legătura cu unitatea sursă; a se vedea GET /api/units/(int:id)/

  • pending (boolean) – dacă unitatea este în așteptare pentru scriere

  • timestamp (timestamp) – vârsta șirului de caractere

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:
Obiect JSON de răspuns:
  • labels (array) – labels, available on source units

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:
Obiect JSON de răspuns:
  • labels (array) – labels, available on source units

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 add-onuri.

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 add-on.

Parametrii:
  • id (int) – ID add-on

Obiect JSON de răspuns:
  • name (string) – numele unui add-on

  • component (string) – Adresa URL a unui obiect component conex

  • configuration (object) – Configurație add-on opțională

Vezi și

Extensii

POST /api/components/(string: project)/(string: component)/addons/

Creează un nou add-on.

Parametrii:
  • project_slug (string) – Limbajul proiectului

  • component_slug (string) – Componenta slug

Obiect JSON de cerere:
  • name (string) – numele unui add-on

  • configuration (object) – Configurație add-on opțională

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

Editați informații parțiale despre add-on.

Parametrii:
  • id (int) – ID add-on

Obiect JSON de răspuns:
  • configuration (object) – Configurație add-on opțională

PUT /api/addons/(int: id)/

Editați informațiile complete despre add-on.

Parametrii:
  • id (int) – ID add-on

Obiect JSON de răspuns:
  • configuration (object) – Configurație add-on opțională

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

Șterge add-on.

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/get-started/customizing-your-github-workflow/exploring-integrations/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.

Cârlig special pentru gestionarea notificărilor Azure DevOps și actualizarea automată a componentelor corespunzătoare.

Notă

Vă rugăm să vă asigurați că Resource details to send este setat la All, altfel Weblate nu va putea să se potrivească cu depozitul Azure.

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 DevOps 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:

pip 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).

stats

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.

--method

Metoda de încărcare care trebuie utilizată, a se vedea Metode de import.

--fuzzy

Procesarea șirurilor fuzzy (marcate pentru editare) (empty, process, approve)

--author-name

Numele autorului, pentru a suprascrie utilizatorul autentificat în prezent

--author-email

E-mailul autorului, pentru a suprascrie utilizatorul autentificat în prezent

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/

Încărcați fișierul de traducere:

$ wlc upload project/component/language --input /tmp/hello.po

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

API-ul Python este livrat separat, trebuie să instalați Client Weblate (wlc) pentru a-l avea.

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):

  • 3 GB of 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.

Schimbat în versiunea 4.10-1: De la Weblate 4.10-1, containerul Docker utilizează Django 4.0, ceea ce necesită PostgreSQL 10 sau mai nou, vă rugăm să îl actualizați înainte de a actualiza Weblate. Consultați Actualizare de la 4.9 la 4.10 și Actualizarea containerului PostgreSQL.

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 între versiunile majore nu sunt suportate de Weblate. De exemplu, dacă sunteți pe seria 3.x și doriți să faceți upgrade la 4.x, faceți mai întâi upgrade la cea mai recentă imagine 4.0.x-y (la momentul scrierii acestui articol este 4.0.4-5), care va face migrația ș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. Consultați Actualizarea containerului PostgreSQL pentru actualizarea serverului PostgreSQL.

Actualizarea containerului PostgreSQL

Containerele PostgreSQL nu acceptă actualizarea automată între versiuni, trebuie să efectuați actualizarea manual. Următorii pași prezintă una dintre opțiunile de actualizare.

  1. Opriți containerul Weblate:

    docker-compose stop weblate cache
    
  2. Efectuați o copie de rezervă a bazei de date:

    docker-compose exec database pg_dumpall --clean --username weblate > backup.sql
    
  3. Opriți containerul bazei de date:

    docker-compose stop database
    
  4. Eliminați volumul PostgreSQL:

    docker-compose rm -v database
    docker volume remove weblate-docker_postgres-data
    
  5. Ajustați docker-compose.yml pentru a utiliza noua versiune PostgreSQL.

  6. Porniți containerul bazei de date:

    docker-compose up -d database
    
  7. Restaurați baza de date din backup:

    cat backup.sql | docker-compose exec -T database psql --username weblate --dbname postgres
    
  8. (Optional) Update password for the Weblate user. This might be needed when migrating to PostgreSQL 14 or 15 as way of storing passwords has been changed:

    docker-compose exec -T database psql --username weblate --dbname postgres -c "ALTER USER weblate WITH PASSWORD 'weblate'"
    
  9. Porniți toate containerele rămase:

    docker-compose up -d
    
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:
  WEB_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.

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

Many of Weblate’s Configurație can be set in the Docker container using the environment variables described below.

If you need to define a setting not exposed through Docker environment variables, see Configuration beyond environment variables.

Setări generice
WEBLATE_DEBUG

Configurează modul de depanare Django folosind DEBUG.

Exemplu:

environment:
  WEBLATE_DEBUG: 1
WEBLATE_LOGLEVEL

Configurează verbozitatea de logare.

WEBLATE_LOGLEVEL_DATABASE

Configurează înregistrarea în jurnal a verbozității interogărilor bazei de date.

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

Adresa de e-mail de la care sunt trimise mesajele de eroare.

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_REGISTRATION_REBIND

Nou în versiunea 4.16.

Configures REGISTRATION_REBIND.

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_INTERLEDGER_PAYMENT_POINTERS

Nou în versiunea 4.12.1.

Permite lui Weblate să seteze câmpul meta[name=monetization] în capul documentului. Dacă sunt specificate mai multe câmpuri, se alege unul la întâmplare.

Vezi și

: setări:INTERLEDGER_PAYMENT_POINTERS

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
WEBLATE_GITHUB_TOKEN
WEBLATE_GITHUB_HOST

Configures GitHub pull-requests integration by changing GITHUB_CREDENTIALS.

WEBLATE_GITLAB_USERNAME
WEBLATE_GITLAB_TOKEN
WEBLATE_GITLAB_HOST

Configures GitLab merge-requests integration by changing GITLAB_CREDENTIALS.

WEBLATE_GITEA_USERNAME
WEBLATE_GITEA_TOKEN
WEBLATE_GITEA_HOST

Configures Gitea pull-requests integration by changing GITEA_CREDENTIALS.

WEBLATE_PAGURE_USERNAME
WEBLATE_PAGURE_TOKEN
WEBLATE_PAGURE_HOST

Configures Pagure merge-requests integration by changing PAGURE_CREDENTIALS.

WEBLATE_BITBUCKETSERVER_USERNAME
WEBLATE_BITBUCKETSERVER_TOKEN
WEBLATE_BITBUCKETSERVER_HOST

Configures Bitbucket Server pull-requests integration by changing BITBUCKETSERVER_CREDENTIALS.

WEBLATE_DEFAULT_PULL_MESSAGE

Configurează titlul și mesajul implicit pentru solicitările de extragere prin API prin modificarea DEFAULT_PULL_MESSAGE

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_API_RATELIMIT_ANON
WEBLATE_API_RATELIMIT_USER

Nou în versiunea 4.11.

Configurează limitarea ratei API. Valoarea implicită este de 100/zi pentru utilizatorii anonimi și 5000/oră pentru utilizatorii autentificați.

WEBLATE_ENABLE_HOOKS

Nou în versiunea 4.13.

Configurează ENABLE_HOOKS.

WEBLATE_ENABLE_AVATARS

Nou în versiunea 4.6.1.

Configurează ENABLE_AVATARS.

WEBLATE_AVATAR_URL_PREFIX

Nou în versiunea 4.15.

Configurează AVATAR_URL_PREFIX.

WEBLATE_LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH

Nou în versiunea 4.9.

Configurează LIMIT_TRANSLATION_LENGTH_BY_SOURCE_LENGTH.

WEBLATE_SSH_EXTRA_ARGS

Nou în versiunea 4.9.

Configurează SSH_EXTRA_ARGS.

WEBLATE_BORG_EXTRA_ARGS

Nou în versiunea 4.9.

Configurează BORG_EXTRA_ARGS.

WEBLATE_ENABLE_SHARING

Nou în versiunea 4.14.1.

Configurează ENABLE_SHARING.

WEBLATE_EXTRA_HTML_HEAD

Nou în versiunea 4.15.

Configures EXTRA_HTML_HEAD.

WEBLATE_PRIVATE_COMMIT_EMAIL_TEMPLATE

Nou în versiunea 4.15.

Configures PRIVATE_COMMIT_EMAIL_TEMPLATE.

WEBLATE_PRIVATE_COMMIT_EMAIL_OPT_IN

Nou în versiunea 4.15.

Configures PRIVATE_COMMIT_EMAIL_OPT_IN.

WEBLATE_CORS_ALLOWED_ORIGINS

Nou în versiunea 4.16.

Allow CORS requests from given origins.

Exemplu:

environment:
  WEBLATE_CORS_ALLOWED_ORIGINS: https://example.com,https://weblate.org
Setări de sugestii automate

Schimbat în versiunea 4.13: Serviciile de sugestie automată sunt acum configurate în interfața cu utilizatorul, a se vedea Configurarea sugestiilor automate.

Variabilele de mediu existente sunt importate în timpul migrării la Weblate 4.13, dar modificarea lor nu va mai avea niciun efect.

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_BIND_PASSWORD_FILE

Calea de acces la fișierul care conține parola de legătură a serverului LDAP.

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
WEBLATE_SOCIAL_AUTH_GITHUB_ORG_KEY
WEBLATE_SOCIAL_AUTH_GITHUB_ORG_SECRET
WEBLATE_SOCIAL_AUTH_GITHUB_ORG_NAME
WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_KEY
WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_SECRET
WEBLATE_SOCIAL_AUTH_GITHUB_TEAM_ID

Activează Autentificarea GitHub.

Bitbucket
WEBLATE_SOCIAL_AUTH_BITBUCKET_OAUTH2_KEY
WEBLATE_SOCIAL_AUTH_BITBUCKET_OAUTH2_SECRET
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.

Gitea
WEBLATE_SOCIAL_AUTH_GITEA_API_URL
WEBLATE_SOCIAL_AUTH_GITEA_KEY
WEBLATE_SOCIAL_AUTH_GITEA_SECRET

Enables Gitea authentication.

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
WEBLATE_SOCIAL_AUTH_KEYCLOAK_TITLE
WEBLATE_SOCIAL_AUTH_KEYCLOAK_IMAGE

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.

Conectare OpenID

Nou în versiunea 4.13-1.

WEBLATE_SOCIAL_AUTH_OIDC_OIDC_ENDPOINT
WEBLATE_SOCIAL_AUTH_OIDC_KEY
WEBLATE_SOCIAL_AUTH_OIDC_SECRET
WEBLATE_SOCIAL_AUTH_OIDC_USERNAME_KEY

Configures generic OpenID Connect integration.

Vezi și

psa:backend/oidc

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
WEBLATE_SAML_IDP_IMAGE
WEBLATE_SAML_IDP_TITLE

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. A se vedea Dezactivarea autentificării prin parolă.

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
POSTGRES_DISABLE_SERVER_SIDE_CURSORS

Nou în versiunea 4.9.1.

Dezactivați cursorii de pe server în baza de date. Acest lucru este necesar în unele configurații pgbouncer.

Exemplu de configurare:

environment:
    POSTGRES_DISABLE_SERVER_SIDE_CURSORS: 1

Vezi și

DISABLE_SERVER_SIDE_CURSORS, django:transaction-pooling-server-side-cursorsors

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_PASSWORD_FILE

Calea către fișierul care conține parola serverului Redis.

Vezi și

REDIS_PASSWORD

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.

Schimbat în versiunea 4.11: Suportul SSL/TLS este activat automat pe baza parametrului WEBLATE_EMAIL_PORT.

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.

Schimbat în versiunea 4.11: Suportul SSL/TLS este activat automat pe baza parametrului WEBLATE_EMAIL_PORT.

WEBLATE_EMAIL_BACKEND

Configurează back-end-ul Django care va fi folosit pentru trimiterea de e-mailuri.

WEBLATE_AUTO_UPDATE

Configurează dacă și cum Weblate trebuie să actualizeze depozitele.

Notă

Aceasta este o setare booleană (utilizați "true" sau "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, add-onurilor 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 WEB_WORKERS. Puteți utiliza aceste setări pentru a regla cu precizie.

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
WEB_WORKERS

Configurați câți lucrători uWSGI trebuie să fie executați.

Valoarea implicită este WEBLATE_WORKERS.

Exemplu:

environment:
  WEB_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.

The cache volume is mounted as /app/cache and is used to store static files and CACHE_DIR. Its content is recreated on container startup and the volume can be mounted using ephemeral filesystem such as tmpfs.

La crearea manuală a volumelor, directoarele trebuie să fie deținute de UID 1000, deoarece acesta este utilizatorul utilizat în container.

Configuration beyond environment variables

Docker environment variables are intended to expose most configuration settings of relevance for Weblate installations.

If you find a setting that is not exposed as an environment variable, and you believe that it should be, feel free to ask for it to be exposed in a future version of Weblate.

If you need to modify a setting that is not exposed as a Docker environment variable, you can still do so, either from the data volume or extending the Docker image.

Overriding settings from the data volume

You can create a file at /app/data/settings-override.py, i.e. at the root of the data volume, to extend or override settings defined through environment variables.

Overriding settings by extending the Docker image

To override settings at the Docker image level instead of from the data volume:

  1. Create a custom Python package.

  2. Add a module to your package that imports all settings from weblate.settings_docker.

    For example, within the example package structure defined at Crearea unui modul Python, you could create a file at weblate_customization/weblate_customization/settings.py with the following initial code:

    from weblate.settings_docker import *
    
  3. Create a custom Dockerfile that inherits from the official Weblate Docker image, and then installs your package and points the DJANGO_SETTINGS_MODULE environment variable to your settings module:

    FROM weblate/weblate
    
    USER root
    
    COPY weblate_customization /usr/src/weblate_customization
    RUN pip install --no-cache-dir /usr/src/weblate_customization
    ENV DJANGO_SETTINGS_MODULE=weblate_customization.settings
    
    USER 1000
    
  4. Instead of using the official Weblate Docker image, build a custom image from this Dockerfile file.

    There is no clean way to do this with docker-compose.override.yml. You could add build: . to the weblate node in that file, but then your custom image will be tagged as weblate/weblate in your system, which could be problematic.

    So, instead of using the docker-compose.yml straight from the official repository, unmodified, and extending it through docker-compose.override.yml, you may want to make a copy of the official docker-compose.yml file, and edit your copy to replace image: weblate/weblate with build: ..

    See the Compose file build reference for details on building images from source when using docker-compose.

  5. Extend your custom settings module to define or redefine settings.

    You can define settings before or after the import statement above to determine which settings take precedence. Settings defined before the import statement can be overridden by environment variables and setting overrides defined in the data volume. Setting defined after the import statement cannot be overridden.

    You can also go further. For example, you can reproduce some of the things that weblate.docker_settings does, such as exposing settings as environment variables, or allow overriding settings from Python files in the data volume.

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

Această abordare poate fi utilizată și pentru a suprascrie șabloanele Weblate. De exemplu, documentele Legal pot fi plasate în /app/data/python/customize/templates/legal/documents.

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
Configurarea serverului PostgreSQL

Containerul PostgtreSQL utilizează configurația PostgreSQL implicită și nu va utiliza eficient nucleele CPU sau memoria. Se recomandă personalizarea configurației pentru a îmbunătăți performanța.

Configurația poate fi ajustată așa cum este descris în Database Configuration la https://hub.docker.com/_/postgres. Configurația care corespunde mediului dumneavoastră poate fi generată folosind https://pgtune.leopard.in.ua/.

Container internals

The container is using supervisor to start individual services. In case of Scalare pe orizontală, it only starts single service in a container.

To check the services status use:

docker-compose exec --user weblate weblate supervisorctl status

There are individual services for each Celery queue (see Sarcini de fundal folosind Celery for details). You can stop processing some tasks by stopping the appropriate worker:

docker-compose exec --user weblate weblate supervisorctl stop celery-translate

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):

  • 3 GB of 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 -y \
   libxml2-dev libxslt-dev libfreetype6-dev libjpeg-dev libz-dev libyaml-dev \
   libffi-dev libcairo-dev gir1.2-pango-1.0 libgirepository1.0-dev \
   libacl1-dev libssl-dev libpq-dev libjpeg-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 -y \
   tesseract-ocr libtesseract-dev libleptonica-dev \
   libldap2-dev libldap-common libsasl2-dev \
   libxmlsec1-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 -y nginx uwsgi uwsgi-plugin-python3

# Web server option 2: Apache with ``mod_wsgi``
apt install -y apache2 libapache2-mod-wsgi-py3

# Caching backend: Redis
apt install -y redis-server

# Database server: PostgreSQL
apt install -y postgresql postgresql-contrib

# SMTP server
apt install -y 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 ~/weblate-env
    
  2. Activați virtualenv pentru Weblate:

    . ~/weblate-env/bin/activate
    
  3. Instalați Weblate, inclusiv toate dependențele opționale:

    # Install Weblate with all optional dependencies
    pip install "Weblate[all]"
    

    Vă rugăm să verificați Dependențe opționale pentru reglarea fină a dependențelor opționale.

    Notă

    Pe unele distribuții Linux, rularea Weblate eșuează cu o eroare libffi:

    ffi_prep_closure(): bad user_data (it seems that the version of the libffi library seen at runtime is different from the 'ffi.h' file seen at compile-time)
    

    Acest lucru este cauzat de incompatibilitatea pachetelor binare distribuite prin PyPI cu distribuția. Pentru a rezolva acest lucru, trebuie să reconstruiți pachetul pe sistemul dumneavoastră:

    pip install --force-reinstall --no-binary :all: cffi
    
Configurarea Weblate

Notă

Ceea ce urmează presupune că virtualenv-ul folosit de Weblate este activat (prin executarea . ~/weblate-env/bin/activate). În caz contrar, specificați calea completă a comenzii weblate ca ~/weblate-env/bin/weblate.

  1. Copiați fișierul ~/weblate-env/lib/python3.9/site-packages/weblate/settings_example.py în ~/weblate-env/lib/python3.9/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 configurație pregătită pentru producție):

    weblate migrate
    
  4. Creați un cont pentru utilizatorul administrator și copiați parola acestuia în clipboard, precum și salvați-o pentru utilizare ulterioară:

    weblate createadmin
    
  5. Colectează fișierele statice pentru serverul tău 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 lucrurile 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.9/site-packages/weblate/examples/celery start
    
  8. Porniți serverul de dezvoltare ( Rularea serverului 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.

  • Examinați problemele potențiale ale instalării dvs. fie pe URL-ul /manage/performance/ (consultați Interfața de gestionare), fie folosind weblate check --deploy, consultați 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.

    Câmpurile importante aici sunt: Denumirea componentei, Depozitul de cod sursă și Masca de fișier pentru găsirea fișierelor traductibile. Weblate acceptă o gamă largă de formate, inclusiv GNU gettext, Resurse de șiruri Android, Șiruri Apple iOS, Proprietăți Java, Formatul Stringsdict sau Format fluent, 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):

  • 3 GB of 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 libffi-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):

zypper install tesseract-ocr tesseract-devel leptonica-devel
zypper install libldap2-devel libsasl2-devel
zypper install libxmlsec1-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 ~/weblate-env
    
  2. Activați virtualenv pentru Weblate:

    . ~/weblate-env/bin/activate
    
  3. Instalați Weblate, inclusiv toate dependențele opționale:

    # Install Weblate with all optional dependencies
    pip install "Weblate[all]"
    

    Vă rugăm să verificați Dependențe opționale pentru reglarea fină a dependențelor opționale.

    Notă

    Pe unele distribuții Linux, rularea Weblate eșuează cu o eroare libffi:

    ffi_prep_closure(): bad user_data (it seems that the version of the libffi library seen at runtime is different from the 'ffi.h' file seen at compile-time)
    

    Acest lucru este cauzat de incompatibilitatea pachetelor binare distribuite prin PyPI cu distribuția. Pentru a rezolva acest lucru, trebuie să reconstruiți pachetul pe sistemul dumneavoastră:

    pip install --force-reinstall --no-binary :all: cffi
    
Configurarea Weblate

Notă

Ceea ce urmează presupune că virtualenv-ul folosit de Weblate este activat (prin executarea . ~/weblate-env/bin/activate). În caz contrar, specificați calea completă a comenzii weblate ca ~/weblate-env/bin/weblate.

  1. Copiați fișierul ~/weblate-env/lib/python3.9/site-packages/weblate/settings_example.py în ~/weblate-env/lib/python3.9/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 configurație pregătită pentru producție):

    weblate migrate
    
  4. Creați un cont pentru utilizatorul administrator și copiați parola acestuia în clipboard, precum și salvați-o pentru utilizare ulterioară:

    weblate createadmin
    
  5. Colectează fișierele statice pentru serverul tău 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 lucrurile 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.9/site-packages/weblate/examples/celery start
    
  8. Porniți serverul de dezvoltare ( Rularea serverului 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.

  • Examinați problemele potențiale ale instalării dvs. fie pe URL-ul /manage/performance/ (consultați Interfața de gestionare), fie folosind weblate check --deploy, consultați 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.

    Câmpurile importante aici sunt: Denumirea componentei, Depozitul de cod sursă și Masca de fișier pentru găsirea fișierelor traductibile. Weblate acceptă o gamă largă de formate, inclusiv GNU gettext, Resurse de șiruri Android, Șiruri Apple iOS, Proprietăți Java, Formatul Stringsdict sau Format fluent, 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):

  • 3 GB of 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 libffi-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
dnf install libldap2-devel libsasl2-devel
dnf install libxmlsec1-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 ~/weblate-env
    
  2. Activați virtualenv pentru Weblate:

    . ~/weblate-env/bin/activate
    
  3. Instalați Weblate, inclusiv toate dependențele opționale:

    # Install Weblate with all optional dependencies
    pip install "Weblate[all]"
    

    Vă rugăm să verificați Dependențe opționale pentru reglarea fină a dependențelor opționale.

    Notă

    Pe unele distribuții Linux, rularea Weblate eșuează cu o eroare libffi:

    ffi_prep_closure(): bad user_data (it seems that the version of the libffi library seen at runtime is different from the 'ffi.h' file seen at compile-time)
    

    Acest lucru este cauzat de incompatibilitatea pachetelor binare distribuite prin PyPI cu distribuția. Pentru a rezolva acest lucru, trebuie să reconstruiți pachetul pe sistemul dumneavoastră:

    pip install --force-reinstall --no-binary :all: cffi
    
Configurarea Weblate

Notă

Ceea ce urmează presupune că virtualenv-ul folosit de Weblate este activat (prin executarea . ~/weblate-env/bin/activate). În caz contrar, specificați calea completă a comenzii weblate ca ~/weblate-env/bin/weblate.

  1. Copiați fișierul ~/weblate-env/lib/python3.9/site-packages/weblate/settings_example.py în ~/weblate-env/lib/python3.9/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 configurație pregătită pentru producție):

    weblate migrate
    
  4. Creați un cont pentru utilizatorul administrator și copiați parola acestuia în clipboard, precum și salvați-o pentru utilizare ulterioară:

    weblate createadmin
    
  5. Colectează fișierele statice pentru serverul tău 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 lucrurile 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.9/site-packages/weblate/examples/celery start
    
  8. Porniți serverul de dezvoltare ( Rularea serverului 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.

  • Examinați problemele potențiale ale instalării dvs. fie pe URL-ul /manage/performance/ (consultați Interfața de gestionare), fie folosind weblate check --deploy, consultați 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.

    Câmpurile importante aici sunt: Denumirea componentei, Depozitul de cod sursă și Masca de fișier pentru găsirea fișierelor traductibile. Weblate acceptă o gamă largă de formate, inclusiv GNU gettext, Resurse de șiruri Android, Șiruri Apple iOS, Proprietăți Java, Formatul Stringsdict sau Format fluent, 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):

  • 3 GB of 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
pip install virtualenv

Make sure pip will be able to find the libffi and openssl versions provided by homebrew — this will be needed during the installation build step.

export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig:/usr/local/opt/openssl@3/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 ~/weblate-env
    
  2. Activați virtualenv pentru Weblate:

    . ~/weblate-env/bin/activate
    
  3. Instalați Weblate, inclusiv toate dependențele opționale:

    # Install Weblate with all optional dependencies
    pip install "Weblate[all]"
    

    Vă rugăm să verificați Dependențe opționale pentru reglarea fină a dependențelor opționale.

    Notă

    Pe unele distribuții Linux, rularea Weblate eșuează cu o eroare libffi:

    ffi_prep_closure(): bad user_data (it seems that the version of the libffi library seen at runtime is different from the 'ffi.h' file seen at compile-time)
    

    Acest lucru este cauzat de incompatibilitatea pachetelor binare distribuite prin PyPI cu distribuția. Pentru a rezolva acest lucru, trebuie să reconstruiți pachetul pe sistemul dumneavoastră:

    pip install --force-reinstall --no-binary :all: cffi
    
Configurarea Weblate

Notă

Ceea ce urmează presupune că virtualenv-ul folosit de Weblate este activat (prin executarea . ~/weblate-env/bin/activate). În caz contrar, specificați calea completă a comenzii weblate ca ~/weblate-env/bin/weblate.

  1. Copiați fișierul ~/weblate-env/lib/python3.9/site-packages/weblate/settings_example.py în ~/weblate-env/lib/python3.9/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 configurație pregătită pentru producție):

    weblate migrate
    
  4. Creați un cont pentru utilizatorul administrator și copiați parola acestuia în clipboard, precum și salvați-o pentru utilizare ulterioară:

    weblate createadmin
    
  5. Colectează fișierele statice pentru serverul tău 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 lucrurile 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.9/site-packages/weblate/examples/celery start
    
  8. Porniți serverul de dezvoltare ( Rularea serverului 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.

  • Examinați problemele potențiale ale instalării dvs. fie pe URL-ul /manage/performance/ (consultați Interfața de gestionare), fie folosind weblate check --deploy, consultați 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.

    Câmpurile importante aici sunt: Denumirea componentei, Depozitul de cod sursă și Masca de fișier pentru găsirea fișierelor traductibile. Weblate acceptă o gamă largă de formate, inclusiv GNU gettext, Resurse de șiruri Android, Șiruri Apple iOS, Proprietăți Java, Formatul Stringsdict sau Format fluent, 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ă înainte de a instala Weblate:

  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
    

    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.celeryq.dev/

Traducere Toolkit

https://toolkit.translatehouse.org/

traducător-detector

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 (opțional pentru suportul depozitelor Mercurial)

https://www.mercurial-scm.org/

phply (opțional pentru Șiruri PHP)

https://github.com/viraptor/phply

tesserocr (opțional pentru OCR în Context vizual pentru șiruri de caractere)

https://github.com/sirfz/tesserocr

python-akismet (opțional pentru Protecția împotriva spam-ului)

https://github.com/ubernostrum/akismet

ruamel.yaml (opțional pentru Fișiere YAML)

https://pypi.org/project/ruamel.yaml/

Zeep (opțional pentru Terminologie Microsoft)

https://docs.python-zeep.org/

aeidon (opțional pentru Fișiere de subtitrare)

https://pypi.org/project/aeidon/

fluent.syntax (opțional pentru Format fluent)

https://projectfluent.org/

Sugestie

Atunci când instalați folosind pip, puteți specifica direct caracteristicile dorite la instalare:

pip install "Weblate[PHP,Fluent]"

Sau puteți instala Weblate cu toate funcțiile opționale:

pip install "Weblate[all]"

Sau puteți instala Weblate fără nicio funcție opțională:

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 GObject

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;
CREATE EXTENSION IF NOT EXISTS btree_gin 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.

Un alt lucru de care trebuie să aveți grijă este antetul Host. Acesta ar trebui să corespundă cu ceea ce este configurat ca SITE_DOMAIN. Ar putea fi necesară o configurare suplimentară în proxy-ul invers (de exemplu, utilizați ProxyPreserveHost On pentru Apache sau proxy_set_header Host $host; cu nginx).

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-generate-secret-key livrat cu Weblate.

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.9/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):

#
# nginx configuration for Weblate
#
# You will want to change:
#
# - server_name
# - change /home/weblate/weblate-env to location where Weblate virtualenv is placed
# - change /home/weblate/data to match your DATA_DIR
# - change python3.9 to match your Python version
# - change weblate user to match your Weblate user
#
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):

#
# uWSGI configuration for Weblate
#
# You will want to change:
#
# - change /home/weblate/weblate-env to location where Weblate virtualenv is placed
# - change /home/weblate/data to match your DATA_DIR
# - change python3.9 to match your Python version
# - change weblate user to match your Weblate user
#
[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
#
# You will want to change:
#
# - ServerAdmin and ServerName
# - change /home/weblate/weblate-env to location where Weblate virtualenv is placed
# - change /home/weblate/data to match your DATA_DIR
# - change python3.9 to match your Python version
# - change weblate user to match your Weblate user
#
<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 request-timeout=600
    WSGIProcessGroup weblate
    WSGIApplicationGroup %{GLOBAL}

    WSGIScriptAlias / /home/weblate/weblate-env/lib/python3.9/site-packages/weblate/wsgi.py process-group=weblate
    WSGIPassAuthorization On

    <Directory /home/weblate/weblate-env/lib/python3.9/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
#
# You will want to change:
#
# - ServerAdmin and ServerName
# - change /home/weblate/weblate-env to location where Weblate virtualenv is placed
# - change /home/weblate/data to match your DATA_DIR
# - change python3.9 to match your Python version
# - change weblate user to match your Weblate user
#
<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
#
# You will want to change:
#
# - ServerAdmin and ServerName
# - change /home/weblate/weblate-env to location where Weblate virtualenv is placed
# - change /home/weblate/data to match your DATA_DIR
# - change python3.9 to match your Python version
# - change weblate user to match your Weblate user
#
<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 request-timeout=600
    WSGIProcessGroup weblate
    WSGIApplicationGroup %{GLOBAL}

    WSGIScriptAlias /weblate /home/weblate/weblate-env/lib/python3.9/site-packages/weblate/wsgi.py process-group=weblate
    WSGIPassAuthorization On

    <Directory /home/weblate/weblate-env/lib/python3.9/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 utilizează Celery pentru a executa sarcini regulate și de fundal. Se presupune că trebuie să rulați un serviciu Celery care să le execute. De exemplu, acesta este responsabil pentru gestionarea următoarelor operațiuni (această listă nu este completă):

O configurație tipică care utilizează Redis ca backend arată astfel:

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.

Executarea sarcinilor Celery în wsgi folosind modul eager

Notă

Acest lucru va avea un impact sever asupra performanțelor interfeței web și va întrerupe caracteristicile care depind de declanșarea regulată (de exemplu, comiterea modificărilor în așteptare, notificările Digest sau copiile de rezervă).

Pentru dezvoltare, este posibil să doriți să utilizați configurația eager, care procesează toate sarcinile pe loc:

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 concurrency 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

Puteți afla lungimea actuală a cozilor de sarcini Celery în Interfața de gestionare sau puteți utiliza celery_queues în linia de comandă. În cazul în care coada de așteptare va deveni prea lungă, veți obține, de asemenea, o eroare de configurare în interfața de administrare.

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:

Sentry

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/"

Rollbar

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

Depending on your database backend, you might have several options to migrate the database. The most straightforward approach is to use database native tools, as they are usually the most effective (e.g. mysqldump or pg_dump). Alternatively you can use replication in case your database supports it.

Vezi și

Migrating between databases described in Migrarea de la alte baze de date la PostgreSQL.

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 provides a Weblate stack for many platforms at <https://bitnami.com/stack/weblate>.

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 (vezi Instalarea folosind Docker) are integrate toate etapele de actualizare Weblate. De obicei, nu sunt necesari pași manuali în afară de extragerea celei mai recente versiuni.

Instrucțiuni generice de actualizare

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

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

Notă

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

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

  2. Actualizați codul Weblate.

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

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

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

    pip install -U "Weblate[all]"
    

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

    pip install -U Weblate
    

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

    cd weblate-src
    git pull
    # Update Weblate inside your virtualenv
    . ~/weblate-env/bin/pip install -e .
    # Install dependencies directly when not using virtualenv
    pip install --upgrade -r requirements.txt
    # Install optional dependencies directly when not using virtualenv
    pip install --upgrade -r requirements-optional.txt
    
  3. Noua versiune Weblate ar putea avea noi Dependențe opționale, vă rugăm să verificați dacă acestea acoperă caracteristicile pe care le doriți.

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

  5. Actualizarea structurii bazei de date:

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

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

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

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

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

Instrucțiuni specifice versiunii

Actualizare de la 2.x

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

Actualizare de la 3.x

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

Actualizare de la 4.0 la 4.1

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

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

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

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

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

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

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

  • Există o modificare în INSTALLED_APPS.

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

Actualizarea de la 4.1 la 4.2

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

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

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

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

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

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

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

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

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

Actualizare de la 4.2 la 4.3

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

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

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

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

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

  • Există o modificare în INSTALLED_APPS.

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

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

Schimbat în versiunea 4.3.1:

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

Schimbat în versiunea 4.3.2:

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

Actualizare de la 4.3 la 4.4

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

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

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

  • Django 3.1 este acum necesar.

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

Schimbat în versiunea 4.4.1:

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

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

Actualizare de la 4.4 la 4.5

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

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

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

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

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

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

Schimbat în versiunea 4.5.1:

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

Actualizare de la 4.5 la 4.6

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

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

Actualizare de la 4.6 la 4.7

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

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

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

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

  • Django 3.2 este acum necesar.

Actualizare de la 4.7 la 4.8

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

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

Actualizare de la 4.8 la 4.9

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

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

Actualizare de la 4.9 la 4.10

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

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

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

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

    • Formatul CSRF_TRUSTED_ORIGINS a fost modificat.

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

Actualizare de la 4.10 la 4.11

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

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

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

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

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

Actualizare de la 4.11 la 4.12

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

  • Nu sunt necesari pași speciali.

Actualizare de la 4.12 la 4.13

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

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

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

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

Actualizare de la 4.13 la 4.14

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

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

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

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

Actualizare de la 4.14 la 4.15

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

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

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

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

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

Upgrade from 4.15 to 4.16

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

Actualizarea de la Python 2 la Python 3

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

Migrarea de la alte baze de date la PostgreSQL

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

Crearea unei baze de date în PostgreSQL

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

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

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

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

Migrarea cu ajutorul descărcărilor Django JSON

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

  1. Adăugați PostgreSQL ca conexiune suplimentară la baza de date în settings.py:

DATABASES = {
    "default": {
        # Database engine
        "ENGINE": "django.db.backends.mysql",
        # Database name
        "NAME": "weblate",
        # Database user
        "USER": "weblate",
        # Database password
        "PASSWORD": "password",
        # Set to empty string for localhost
        "HOST": "database.example.com",
        # Set to empty string for default
        "PORT": "",
        # Additional database options
        "OPTIONS": {
            # In case of using an older MySQL server, which has MyISAM as a default storage
            # 'init_command': 'SET storage_engine=INNODB',
            # Uncomment for MySQL older than 5.7:
            # 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
            # If your server supports it, see the Unicode issues above
            "charset": "utf8mb4",
            # Change connection timeout in case you get MySQL gone away error:
            "connect_timeout": 28800,
        },
    },
    "postgresql": {
        # Database engine
        "ENGINE": "django.db.backends.postgresql",
        # Database name
        "NAME": "weblate",
        # Database user
        "USER": "weblate",
        # Database password
        "PASSWORD": "password",
        # Set to empty string for localhost
        "HOST": "database.example.com",
        # Set to empty string for default
        "PORT": "",
    },
}
  1. Executați migrările și renunțați la toate datele inserate în tabele:

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

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

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

Migrarea la PostgreSQL folosind pgloader

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

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

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

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

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

Migrarea de la Pootle

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

Copierea de rezervă și mutarea Weblate

Copii de rezervă la nivel de proiect

Nou în versiunea 4.14.

Atenționare

Restaurarea copiilor de rezervă este acceptată numai atunci când se utilizează PostgreSQL sau MariaDB 10.5+ ca bază de date.

Proiectul face o copie de rezervă a întregului conținut de traducere din Weblate (proiect, componente, traduceri, comentarii de șiruri, sugestii sau verificări). Este potrivit pentru transferul unui proiect către o altă instanță Weblate.

Puteți efectua o copie de rezervă a proiectului în ManageBackups. Copia de rezervă poate fi restaurată la crearea unui proiect (a se vedea Adăugarea de proiecte și componente de traducere).

În prezent, copiile de rezervă nu includ informații privind controlul accesului și istoricul.

Comentariile și sugestiile sunt susținute de un nume de utilizator care le-a creat. La import, acestea sunt atribuite unui utilizator corespunzător. Dacă nu există un utilizator cu un astfel de nume de utilizator, este atribuit unui utilizator anonim.

Copiile de rezervă generate sunt păstrate pe server după cum este configurat prin PROJECT_BACKUP_KEEP_DAYS și PROJECT_BACKUP_KEEP_COUNT (în mod implicit se păstrează cel mult 3 copii de rezervă pentru 30 de zile).

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

Personalizarea copiei de rezervă

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. Configurați locația de backup în Weblate ca user@host:/path/to/backups sau 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 restaura copia de rezervă a bazei de date, încărcați-o folosind instrumente de baze de date, 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/.

Există backend-uri de autentificare similare pentru GitHub for Organizations și GitHub for Teams. Setările lor se numesc SOCIAL_AUTH_GITHUB_ORG_* și SOCIAL_AUTH_GITHUB_TEAM_* și necesită o setare suplimentară a domeniului de aplicare - SOCIAL_AUTH_GITHUB_ORG_NAME sau SOCIAL_AUTH_GITHUB_TEAM_ID. URL-urile lor de apelare sunt https://example.com/accounts/complete/github-org/ și https://example.com/accounts/complete/github-teams/.

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.BitbucketOAuth2",
    "social_core.backends.email.EmailAuth",
    "weblate.accounts.auth.WeblateUserBackend",
)

# Social auth backends setup
SOCIAL_AUTH_BITBUCKET_OAUTH2_KEY = "Bitbucket Client ID"
SOCIAL_AUTH_BITBUCKET_OAUTH2_SECRET = "Bitbucket Client Secret"
SOCIAL_AUTH_BITBUCKET_OAUTH2_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.

Dezactivarea autentificării prin e-mail va dezactiva toate funcționalitățile legate de e-mail - invitația utilizatorului sau funcția de resetare a parolei.

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/login/.

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.

Gestionarea controlului accesului pe proiect

Utilizatorii cu privilegiul Manage project access (a se vedea privilege) pot gestiona utilizatorii din proiecte prin adăugarea acestora la echipe. Colecția inițială de echipe este furnizată de Weblate, dar pot fi definite și altele suplimentare care să ofere un control mai fin al accesului. Puteți limita echipele la limbi și le puteți atribui roluri de acces desemnate (a se vedea Lista de privilegii și roluri încorporate).

Următoarele echipe sunt create automat pentru fiecare proiect:

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

Traducere automată

Se poate utiliza traducerea automată.

Versiune Control Sistem VCS

Poate gestiona VCS și poate accesa depozitul exportat.

Facturare

Poate accesa informațiile și setările de facturare (see Facturare).

_images/manage-users.png

Aceste caracteristici sunt disponibile pe pagina Access control, care poate fi accesată din meniul proiectului ManageUsers.

Administratorii echipei

Nou în versiunea 4.15.

Fiecare echipă poate avea un administrator de echipă, care poate adăuga și elimina utilizatori în cadrul echipei. Acest lucru este util în cazul în care doriți să creați echipe autoguvernate.

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 (de exemplu, o apartenență la echipa Administration) ar fi suficientă.

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 teams din cauza configurației proprii a acestor echipe. Acest lucru nu vă împiedică să acordați permisiuni pentru aceste proiecte la nivelul întregului site prin modificarea echipelor implicite, prin crearea uneia noi 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 echipa Administration a 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 echipe și roluri, unde rolurile definesc un set de permisiuni, iar echipele le leagă de utilizatori și traduceri, vezi Users, roles, teams, and permissions 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 deodată permisiunile pentru o întreagă instanță, adăugați utilizatorii la echipele corespunzătoare default teams:

  • Utilizatori (acest lucru este făcut în mod implicit de către asignarea automată a echipei).

  • 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 (a se vedea Control acces proiect), altfel permisiunile la nivel de site oferite de apartenența la echipele Users și Reviewers nu vor avea niciun efect.

You may also grant some additional permissions of your choice to the default teams. For example, you may want to give a permission to manage screenshots to all the Users.

You can define some new custom teams as well. If you want to keep managing your permissions site-wide for these teams, choose an appropriate value for the Project selection (e.g. All projects or All public projects).

Permisiuni personalizate pentru limbi, componente sau proiecte

You can create your own dedicated teams to manage permissions for distinct objects such as languages, components, and projects. Although these teams can only grant additional privileges, you can’t revoke any permission granted by site-wide or per-project teams by adding another custom team.

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. Remove the permission to translate Czech from all the users. In the default configuration this can be done by altering the Users default team.

    Grup Utilizatori

    Selectarea limbii

    Cum este definit

    Limbi

    Toate în afară de Cehă

  1. Add a dedicated team for Czech translators.

    Grupul Traducători de limba cehă

    Roluri

    Utilizatori puternici

    Selecția proiectului

    Toate proiectele publice

    Selectarea limbii

    Cum este definit

    Limbi

    Cehă

  1. Add users you wish to give the permissions to into this team.

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.

Users, roles, teams, and permissions

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

User can belong to several teams.

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ă

A team can have no roles assigned to it, in that case access to browse the project by anyone is assumed (see below).

Acces pentru navigarea la un proiect

A user has to be a member of a team linked to the project, or any component inside that project. Having membership is enough, no specific permissions are needed to browse the project (this is used in the default Viewers team, see List of teams).

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

Scope of teams

The scope of the permission assigned by the roles in the teams are applied by the following rules:

  • If the team specifies any Component list, all the permissions given to members of that team are granted for all the components in the component lists attached to the team, and an access with no additional permissions is granted for all the projects these components are in. Components and Projects are ignored.

  • If the team specifies any Components, all the permissions given to the members of that team are granted for all the components attached to the team, and an access with no additional permissions is granted for all the projects these components are in. Projects are ignored.

  • Otherwise, if the team specifies any Projects, either by directly listing them or by having Projects selection set to a value like All public projects, all those permissions are applied to all the projects, which effectively grants the same permissions to access all projects unrestricted components.

  • The restrictions imposed by a team’s Languages are applied separately, when it’s verified if a user has an access to perform certain actions. Namely, it’s applied only to actions directly related to the translation process itself like reviewing, saving translations, adding suggestions, etc.

Sugestie

Utilizați Selecție limbă sau Selecție proiect pentru a automatiza includerea tuturor limbilor sau proiectelor.

Exemplu:

Let’s say there is a project foo with the components: foo/bar and foo/baz and the following team:

Grupul Spanish Administratori-Revizori

Roluri

Revizuire șiruri de caractere, Gestionare depozit

Componente

foo/bar

Limbi

Spaniolă

Members of that team will have following permissions (assuming the default role settings):

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

Automatic team assignments

On the bottom of the Group editing page in the Django admin interface, you can specify Automatic team assignments, which is a list of regular expressions used to automatically assign newly created users to a team based on their e-mail addresses. This assignment only happens upon account creation.

The most common use-case for the feature is to assign all new users to some default team. In order to do so, you will probably want to keep the default value (^.*$) in the regular expression field. Another use-case for this option might be to give some additional privileges to employees of your company by default. Assuming all of them use corporate e-mail addresses on your domain, this can be accomplished with an expression like ^.*@mycompany.com.

Notă

Automatic team assignment to Users and Viewers is always recreated when upgrading from one Weblate version to another. If you want to turn it off, set the regular expression to ^$ (which won’t match anything).

Notă

As for now, there is no way to bulk-add already existing users to some team via the user interface. For that, you may resort to using the REST API.

Default teams and roles

After installation, a default set of teams is created (see List of teams).

These roles and teams are created upon installation. The built-in roles are always kept up to date by the database migration when upgrading. You can’t actually change them, please define a new role if you want to define your own set of permissions.

Lista de privilegii și roluri încorporate

Domeniul de aplicare

Permisiune

Roluri

Facturare (a se vedea Facturare)

Vezi informații de facturare

Administrație, Facturare

Modificări

Descărcați modificările

Administrare

Comentarii

Posta comentariu

Administrare, Editare sursă, Putere utilizator, Revizuire șiruri de caractere, Traducere

Ștergeți comentariul

Administrare

Rezolvați comentariul

Administrare, Străzi de revizuire

Componenta

Editați setările componentelor

Administrare

Componenta de blocare, împiedicând traducerile

Administrare

Glosar

Adăugați o intrare în glosar

Administrare, Gestionare glosar, Power user

Editarea intrării în glosar

Administrare, Gestionare glosar, Power user

Ștergerea intrării în glosar

Administrare, Gestionare glosar, Power user

Încărcați intrările din glosar

Administrare, Gestionare glosar, Power user

Sugestii automate

Utilizați sugestii automate

Administrare, Editare sursă, Putere utilizator, Revizuire șiruri de caractere, Traducere

Memorie de traducere

Editarea memoriei de traducere

Administrare, Gestionare memorie de traducere

Ștergeți memoria de traducere

Administrare, Gestionare memorie de traducere

Proiecte

Editați setările proiectului

Administrare

Gestionați accesul la proiect

Administrare

Rapoarte

Descărcați rapoarte

Administrare

Capturi de ecran

Adăugați captură de ecran

Administrare, Gestionare capturi de ecran

Editați captura de ecran

Administrare, Gestionare capturi de ecran

Ștergeți captura de ecran

Administrare, Gestionare capturi de ecran

Șiruri de surse

Editați informații suplimentare despre șiruri

Administrare, Modificare sursă

Șiruri de caractere

Adăugați un nou șir de caractere

Administrare

Eliminați un șir de caractere

Administrare

Respinge controlul nereușit

Administrare, Editare sursă, Putere utilizator, Revizuire șiruri de caractere, Traducere

Editarea șirurilor de caractere

Administrare, Editare sursă, Putere utilizator, Revizuire șiruri de caractere, Traducere

Șiruri de revizuire

Administrare, Străzi de revizuire

Editați șirul de caractere atunci când sugestiile sunt puse în aplicare

Administrare, Străzi de revizuire

Editarea șirurilor sursă

Administrare, Editare sursă, Utilizator autorizat

Sugestii

Acceptați sugestia

Administrare, Editare sursă, Putere utilizator, Revizuire șiruri de caractere, Traducere

Adăugați o sugestie

Administrare, Modifică sursa, Adaugă sugestii, Putere utilizator, Revizuiește șirurile de caractere, Traduce

Ștergeți sugestia

Administrare, Utilizator de putere

Votul asupra sugestiei

Administrare, Editare sursă, Putere utilizator, Revizuire șiruri de caractere, Traducere

Traduceri

Adăugați limba pentru traducere

Administrare, Utilizator puternic, Gestionare limbi

Efectuați traducerea automată

Administrare, Traducerea automată

Ștergeți traducerea existentă

Administrație, Gestionare limbi

Descărcați fișierul de traducere

Administrare, Editare sursă, Acces la depozit, Power user, Revizuire șiruri de caractere, Traducere, Gestionare limbi

Adăugați mai multe limbi pentru traducere

Administrație, Gestionare limbi

Încărcături

Definiți autorul traducerii încărcate

Administrare

Suprascrieți șirurile existente cu încărcare

Administrare, Editare sursă, Putere utilizator, Revizuire șiruri de caractere, Traducere

Încărcați traduceri

Administrare, Editare sursă, Putere utilizator, Revizuire șiruri de caractere, Traducere

Versiune Control Sistem VCS

Accesați depozitul intern

Administrare, Acces la depozit, Putere utilizator, Gestionare depozit

Trimiteți modificările în depozitul intern

Administrare, Gestionare depozit

Împingeți modificarea din depozitul intern

Administrare, Gestionare depozit

Resetarea modificărilor în depozitul intern

Administrare, Gestionare depozit

Vizualizați locația depozitului din amonte

Administrare, Acces la depozit, Putere utilizator, Gestionare depozit

Actualizarea depozitului intern

Administrare, Gestionare depozit

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ă

Manage teams

Gestionați utilizatorii

Gestionați rolurile

Gestionați anunțurile

Gestionați memoria de traducere

Gestionarea utilajelor

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.

List of teams

The following teams are created upon installation (or after executing setupgroups) and you are free to modify them. The migration will, however, re-create them if you delete or rename them.

Oaspeți

Definește permisiunile pentru utilizatorii neautentificați.

This team only contains anonymous users (see ANONYMOUS_USER_NAME).

You can remove roles from this team to limit permissions for non-authenticated users.

Roluri implicite: Adaugați sugestii, Accesați depozitul

Vizualizatori

This role ensures visibility of public projects for all users. By default, all users are members of this team.

By default, automatic team assignment makes all new accounts members of this team when they join.

Roluri implicite: niciunul

Utilizatori

Default team for all users.

By default, automatic team assignment makes all new accounts members of this team when they join.

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

Never remove the predefined Weblate teams and users as this can lead to unexpected problems! If you have no use for them, you can removing all their privileges instead.

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 conectarea pentru a accesa toate paginile site-ului. Aceasta este practic modalitatea de a bloca instalarea Weblate.

Sugestie

Puteți utiliza built-in Invitație utilizator nou 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 care descrie procesul de localizare din cadrul proiectului și orice alte informații utile pentru traducători. Markdown poate fi utilizat pentru formatarea textului sau pentru inserarea de linkuri.

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ă poate fi modificată prin 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ă poate fi modificată prin 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 add-on-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.

În cazul depozitelor legate, acest lucru nu este utilizat și se aplică setarea din componenta legată.

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.

În cazul depozitelor legate, acest lucru nu este utilizat și se aplică setarea din componenta legată.

Împingeți ramura

Branșă pentru împingerea modificărilor, lăsați gol pentru a folosi Ramura de depozit.

În cazul depozitelor legate, acest lucru nu este utilizat și se aplică setarea din componenta legată.

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

Indicarorii traducerii

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 Indicarorii traducerii 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 amonte. Implementarea efectivă depinde de VCS, consultați Integrarea controlului versiunilor.

rebazare

Reface modificările Weblate pe partea de sus a depozitului din amonte la actualizare. Acest lucru oferă un istoric curat fără comenzi suplimentare de fuziune.

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.

S-ar putea să fie nevoie să activați forțarea împingerii prin alegerea Git cu forța push ca Sistem de control al versiunilor, în special atunci când împingeți pe o ramură diferită.

Îmbinare

Modificările din depozitul din amonte sunt fuzionate în cel din Weblate. Această setare utilizează avansarea rapidă atunci când este posibil. Aceasta este cea mai sigură cale, dar poate produce o mulțime de comenzi de fuziune.

Fuziune fără fast-forward

Modificările din depozitul din amonte sunt fuzionate în Weblate one, cu efectuarea de fiecare dată a unei comenzi de fuziune (chiar și atunci când ar fi posibilă avansarea rapidă). Fiecare modificare din Weblate va apărea ca o confirmare de fuziune în depozitul Weblate.

Valoarea implicită poate fi modificată prin DEFAULT_MERGE_STYLE.

Comiterea, adăugarea, ștergerea, îmbinarea, adăugarea și îmbinarea mesajelor de solicitare

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, DEFAULT_PULL_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 masca de fișier. 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 administratorii de proiect, în interfața Weblate.

Prioritate

Componentele cu prioritate mai mare sunt oferite mai întâi traducătorilor.

Schimbat în versiunea 4.15: This now also affects ordering of matched glossary terms.

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 add-onului executat în prezent, disponibil numai în mesajul de confirmare a add-onului.

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 add-onului Descoperirea componentelor.

Pentru a utiliza add-onul, 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 add-onul 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.

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.

Parsarea codurilor lingvistice

În timp ce analizează traducerile, Weblate încearcă să mapeze codul de limbă (de obicei cel ISO 639-1) din Masca de fișier la orice obiect de limbă 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.

Coduri lingvistice ambigue și macrolimbajuri

În multe cazuri, nu este o idee bună să se utilizeze codul macrolimbajului 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ă se utilizeze numai coduri lingvistice individuale și să se evite 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.

Numărul de vorbitori

Number of worldwide speakers of this language.

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). Formatele bazate pe documente (de exemplu Formatul OpenDocument) încep cu o copie a documentului sursă și cu toate șirurile marcate ca necesitând editare. Î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).

Stilul BCP care utilizează cratima ca separator, coduri de limbă moștenite

Folosește coduri vechi pentru notele în stil chinezesc și BCP.

Stil BCP, folosind cratima ca separator, cu litere minuscule

Notație în stilul BCP, toate în minuscule (de exemplu cs-cz).

Apple App Store metadata style

Style suitable for uploading metadata to Apple App Store.

Google Play metadata style

Style suitable for uploading metadata to Google Play Store.

Stil Android

Folosit numai în aplicațiile Android, produce coduri de limbă precum pt-rBR.

Stil Linux

Setările regionale utilizate de Linux, utilizează coduri vechi pentru chineză și notații de tip POSIX.

Î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 push-uri directe prin Weblate, există suport pentru GitHub solicitări de tracțiune, Cereri de fuziune GitLab, Gitea cereri de pull, Cereri de fuziune Pagure pull requests sau :ref: vcs-gerrit review-uri, le puteți activa alegând GitHub, GitLab, Gitea, 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 solicitări de tracțiune

vid

vid

GitHub trage cerere de la branșă

GitHub solicitări de tracțiune

URL SSH [1]

Denumirea branșei

Cerere de fuziune GitLab din bifurcație

Cereri de fuziune GitLab

vid

vid

Cerere de fuziune GitLab din branșă

Cereri de fuziune GitLab

URL SSH [1]

Denumirea branșei

Gitea cerere de fuziune din fork

Gitea cereri de pull

vid

vid

Cerere de fuziune Gitea din branșă

Gitea cereri de pull

URL SSH [1]

Denumirea branșei

Cerere de fuziune Pagure din bifurcație

Cereri de fuziune Pagure

vid

vid

Pagure cerere de îmbinare din ramura

Cereri de fuziune Pagure

URL SSH [1]

Denumirea branșei

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

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 Lista de privilegii și roluri încorporate).

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 add-on-ul Comenzi Git Squash.

If you want to commit changes more frequently and without checking of age, you can schedule a regular task to perform a commit. This can be done using Periodic Tasks in Interfața de administrare Django. First create desired Interval (for example 120 seconds). Then add new periodic task and choose weblate.trans.tasks.commit_pending as Task with {"hours": 0} as Keyword Arguments and desired interval.

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 add-ons.

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 un add-on (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.

Indicarorii traducerii

Nou în versiunea 2.4.

Schimbat în versiunea 3.3: Numit anterior Quality checks flags, nu mai configurează numai verificări.

Personalizarea controalelor de calitate și a altor comportamente Weblate, vezi Personalizarea comportamentului cu ajutorul stegulețelor.

Stegulețele pentru șiruri de caractere sunt, de asemenea, moștenite de la Indicarorii traducerii de la Configurația componentei și de la stegulețele din fișierul de traducere (a se vedea Formate de fișiere acceptate).

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 © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

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 personalizate ale calității, add-on-uri și corecții automate.

Personalizarea comportamentului cu ajutorul stegulețelor

Puteți regla cu precizie comportamentul Weblate folosind stegulețe. Acest lucru se poate face la nivelul șirului sursă (a se vedea Informații suplimentare despre șirurile sursă), sau în Configurația componentei (Indicarorii traducerii). Unele formate de fișiere permit, de asemenea, specificarea de indicatori 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:.*

Sunt acceptate atât ghilimelele simple, cât și cele duble, iar caracterele speciale sunt scăpate folosind backslash:

placeholders:"quoted \"string\"":'single \'quoted\''

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 Șiruri de caractere numai pentru citire.

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ște indicatori pentru personalizarea comportamentului verificării calității Format mesaj ICU.

icu-tag-prefix:PREFIX`

Setați un prefix necesar pentru etichetele XML pentru verificarea calității Format mesaj ICU.

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

Activați verificarea calității Format mesaj ICU.

java-printf-format

Activați verificarea calității format Java.

java-format

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.

case-insensitive

Ajustați comportamentul verificărilor pentru a nu ține cont de majuscule și minuscule. În prezent, afectează doar verificarea calității Semne de poziție.

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-all-checks

Ignorați toate verificările de calitate.

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

Săriți peste verificarea calității Format mesaj ICU.

ignore-java-format

Săriți peste verificarea calității Mesaj în format Java.

ignore-java-printf-format

Săriți peste verificarea calității 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

Săriți peste verificarea calității Format mesaj ICU.

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 neglijată î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).

Notă

Dacă activați aplicarea verificărilor nu se activează automat. Verificarea poate fi activată prin adăugarea indicatorului corespunzător la indicatoarele de șir sau de componentă.

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

Definește lățimea maximă în pixeli.

font-family:ubuntu

Definește grupul de fonturi care urmează să fie utilizat prin specificarea identificatorului acestuia.

font-size:22

Definește dimensiunea fontului în pixeli.

Î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 personalizate ale calității, add-on-uri și corecții automate.

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 © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

"""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 © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

"""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

Configurarea sugestiilor automate

Schimbat în versiunea 4.13: Înainte de Weblate 4.13, serviciile erau configurate în fișierul Configurație.

Suportul pentru mai multe servicii de traducere automată și memorii de traducere este integrat. Fiecare serviciu poate fi activat de către administrator pentru întregul site sau la setările proiectului:

_images/project-machinery.png

Notă

Acestea sunt supuse termenilor de utilizare, așa că asigurați-vă că vi se permite să le folosiți așa cum doriți.

Serviciile traduc din limba sursă configurată la Configurația componentei, a se vedea Limba sursă.

Amagama

ID-ul serviciului:

amagama

Configurație:

Acest serviciu nu are nicio configurație.

Instalare specială a tmserver rulată de autorii lui Virtaal.

APy Apertium

ID-ul serviciului:

apertium-apy

Configurație:

url

URL-UL API

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.

AWS

Nou în versiunea 3.1.

ID-ul serviciului:

aws

Configurație:

key

ID-ul cheii de acces

secret

Cheia secretă API

region

Numele regiunii

Amazon Translate este un serviciu de traducere automată neuronală pentru traducerea textului în și din limba engleză într-o gamă largă de limbi acceptate.

Baidu

Nou în versiunea 3.2.

ID-ul serviciului:

baidu

Configurație:

key

ID client

secret

Clientul secret

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.

DeepL

Nou în versiunea 2.20.

ID-ul serviciului:

deepl

Configurație:

url

URL-UL API

key

Cheia API

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

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.

Weblate suportă DeepL formalitate, va alege una potrivită în funcție de limbă (de exemplu, există de@formal și de@informal).

Glosbe

ID-ul serviciului:

glosbe

Configurație:

Acest serviciu nu are nicio configurație.

Dicționar gratuit și memorie de traducere pentru aproape toate limbile vii.

Utilizarea API este gratuită, dar utilizarea traducerilor 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.

Vezi și

Glosbe website

Google Traducere

ID-ul serviciului:

google-translate

Configurație:

key

Cheia API

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.

Google Traducere API v3

ID-ul serviciului:

google-translate-api-v3

Configurație:

credentials

Informații despre contul de servicii Google Translate

project

Proiectul Google Translate

location

Google Translate locație

Serviciu de traducere automată furnizat de serviciile Google Cloud.

Traducere Libre

Nou în versiunea 4.7.1.

ID-ul serviciului:

libretranslate

Configurație:

url

URL-UL API

key

Cheia API

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.

https://libretranslate.com/ (instanță publică oficială)

Necesită o cheie API pentru a fi utilizată în afara site-ului web.

Terminologie Microsoft

Nou în versiunea 2.19.

ID-ul serviciului:

microsoft-terminology

Configurație:

Acest serviciu nu are nicio configurație.

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.

Traducător Microsoft

Nou în versiunea 2.10.

ID-ul serviciului:

microsoft-translator

Configurație:

key

Cheia API

base_url

URL-ul de bază al aplicației

Alegerile disponibile:

api.cognitive.microsofttranslator.com – Global (ne-regional)

api-apc.cognitive.microsofttranslator.com – Asia Pacific

api-eur.cognitive.microsofttranslator.com – Europa

api-nam.cognitive.microsofttranslator.com – America de Nord

api.translator.azure.cn – China

api.cognitive.microsofttranslator.us – Azure US Government cloud

endpoint_url

Authentication service URL

Regional or multi-service can be specified using region field below.

Alegerile disponibile:

api.cognitive.microsoft.com – Global

api.cognitive.azure.cn – China

api.cognitive.microsoft.us – Azure US Government cloud

region

Authentication service region

Serviciul de traducere automată furnizat de Microsoft în portalul Azure ca unul dintre serviciile cognitive.

Weblate implementează Translator API V3.

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 region la localitatea serviciului dumneavoastră.

Sugestie

Pentru Azure China, vă rugăm să utilizați punctul final din Azure Portal.

ModernMT

Nou în versiunea 4.2.

ID-ul serviciului:

modernmt

Configurație:

url

URL-UL API

key

Cheia API

MyMemory

ID-ul serviciului:

mymemory

Configurație:

email

E-mail de contact

username

Nume utilizator

key

Cheia API

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 email. De asemenea, puteți să le cereți mai mult.

Vedere Netease

Nou în versiunea 3.3.

ID-ul serviciului:

netease-sight

Configurație:

key

ID client

secret

Clientul secret

Serviciu de traducere automată furnizat de NetEase.

Acest serviciu utilizează un API, iar tu trebuie să obții cheia și secretul de la NetEase.

Centrul de traduceri SAP

ID-ul serviciului:

sap-translation-hub

Configurație:

url

URL-UL API

key

Cheia API

username

Nume utilizator SAP

password

parola SAP

enable_mt

Activați traducerea automată

domain

Domeniu traducere

ID-ul unui domeniu de traducere, de exemplu, BC. Dacă nu specificați un domeniu, metoda caută traduceri în toate domeniile disponibile.

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.

De asemenea, puteți configura dacă doriți să utilizați și servicii de traducere automată, în plus față de baza de date de termeni.

Notă

Pentru a accesa API-ul Sandbox, trebuie să setați url și key.

Pentru a accesa API-ul productiv, trebuie să setați url, username și password.

tmserver

ID-ul serviciului:

tmserver

Configurație:

url

URL-UL API

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:

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 el, URL-ul implicit este http://localhost:8888/tmserver/.

IBM Watson Language Translator

ID-ul serviciului:

ibm

Configurație:

url

URL-UL API

key

Cheia API

IBM Watson Language Translator translates text from one language to another. The service offers multiple domain-specific models.

Weblate

ID-ul serviciului:

weblate

Configurație:

Acest serviciu nu are nicio configurație.

Serviciul de traducere automată Weblate poate oferi traduceri pentru șirurile de caractere care sunt deja traduse în Weblate. Acesta caută corespondențe exacte în șirurile existente.

Memorie de traducere Weblate

Nou în versiunea 2.20.

ID-ul serviciului:

weblate-translation-memory

Configurație:

Acest serviciu nu are nicio configurație.

Utilizați Memorie de traducere ca serviciu de traducere automată. Orice șir de caractere care a fost tradus în trecut (sau încărcat în memoria de traducere) poate fi tradus în acest mod.

Yandex

ID-ul serviciului:

yandex

Configurație:

key

Cheia API

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.

Youdao Zhiyun

Nou în versiunea 3.2.

ID-ul serviciului:

youdao-zhiyun

Configurație:

key

ID client

secret

Clientul secret

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.

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 © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

"""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 WEBLATE_MACHINERY ș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 – Se adaugă ca sugestie

translate – Adaugă ca traducere

fuzzy – Adăugați ca „Necesitând editare”

filter_type

Filtru de căutare

Vă rugăm să rețineți că traducerea tuturor șirurilor de caractere va elimina toate traducerile existente.

Alegerile disponibile:

all – Toate șirurile de caractere

nottranslated – Șiruri netraduse

todo – Șiruri neterminate

fuzzy – Șiruri de caractere marcate pentru editare

check:inconsistent – Eșecul verificării: Inconsistent

auto_source

Sursa de traduceri automate

Alegerile disponibile:

Alte componente de traducere

Traducere automată

component

Componente

Introduceți slug-ul unei componente care urmează să fie utilizată ca sursă, păstrați spațiul gol pentru a utiliza toate componentele din proiectul curent.

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 se potrivi cu fișierele de traducere

file_format

Formatul fișierului

name_template

Personalizați numele componentei

base_file_template

Definiți numele fișierului de bază monolingv

Lăsați 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.

intermediate_template

Fișier de limbaj intermediar

Numele de fișier al fișierului de traducere intermediar. În cele mai multe cazuri, acesta este un fișier de traducere furnizat de dezvoltatori și este utilizat la crearea șirurilor sursă reale.

language_regex

Filtru lingvistic

Expresie regulată pentru filtrarea fișierelor de traducere la scanarea pentru masca de fișiere.

copy_addons

Clonarea addon-urilor din componenta principală în cele nou create

remove

Eliminați componente pentru fișierele 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

Indicator 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ă

Editați majoritatea semnalelor, etichetelor sau starea șirurilor.

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 șirurilor de modificare Fișiere de metadate ale magazinului de aplicații changelog numai pentru citire

Interogare de căutare

language:en AND key:changelogs/

Indicator de traducere de adăugat

read-only

Semnalați traducerile neschimbate ca „Necesită editare”

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 semnalat 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 Indicarorii traducerii.

Semnalați șirurile sursă noi ca „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.

Semnalați traducerile noi ca „Necesită editare”

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 semnalat 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 }}",
}

Preumplerea traducerii cu sursa

Nou în versiunea 4.11.

ID add-on:

weblate.generate.prefill

Configurație:

Acest add-on nu are nicio configurație.

Declanșări:

actualizare componentă, zilnic

Completează șirurile de traducere cu șirul sursă.

Toate șirurile de caractere netraduse din componentă vor fi completate cu șirul sursă și vor fi marcate ca necesitând editare. Utilizați această opțiune atunci când nu puteți avea șiruri de caractere goale în fișierele de traducere.

Generarea de pseudolocale

Nou în versiunea 4.5.

ID add-on:

weblate.generate.pseudolocale

Configurație:

source

Șiruri de surse

target

Traducerea țintă

Toate șirurile din această traducere vor fi suprascrise

prefix

Prefix de șir fix

var_prefix

Prefixul șirului de variabile

suffix

Sufix de șir fix

var_suffix

Sufixul șirului de variabile

var_multiplier

Multiplicatorul părții variabile

De câte ori se repetă partea variabilă în funcție de lungimea șirului sursă.

include_readonly

Includeți șiruri de caractere numai pentru citire

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.

Utilizarea părților variabile face posibilă căutarea șirurilor de caractere care ar putea să nu se potrivească în interfața cu utilizatorul după localizare - se extinde textul pe baza lungimii șirului sursă. Părțile variabile se repetă prin lungimea textului înmulțită cu multiplicatorul. De exemplu, Hello world cu sufixul variabil _ și multiplicatorul variabil de 1 devine Hello world___________ - sufixul este repetat o dată pentru fiecare caracter din șirul sursă.

Șirurile de caractere vor fi generate folosind următorul model:

Prefix de șir fix Prefix de șir variabil Șir sursă Sufix de șir variabil Sufix de șir fix Sufix de șir fix

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@weblate.org>, 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:

77 – Înfășurarea liniilor la 77 de caractere și la liniile noi (implicit xgettext)

65535 – Întoarceți liniile numai la liniile noi (like «xgettext –no-wrap»)

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:

  • Toate angajamentele într-una singură

  • Pe limbă

  • Pe fișier

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

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.

Formatați 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

Se formatează și se sortează fișierul de proprietăți Java.

  • Consolidează liniile noi la cele Unix.

  • Formatarea cu majuscule a secvențelor de evacuare Unicode (în cazul în care acestea sunt prezente).

  • Șiruri cu observații.

  • Sortează șirurile de caractere în funcție de chei.

  • Renunță la șirurile duplicate.

Î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

Actualizați toate fișierele de traducere pentru a se potrivi cu fișierul de bază monolingv extern. Șirurile neutilizate 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.

Customize XML output

Nou în versiunea 4.15.

ID add-on:

weblate.xml.customize

Configurație:

closing_tags

Include closing tag for blank XML tags

Declanșări:

depozitare post-încărcare

Allows adjusting XML output behavior, for example closing tags instead of self- closing tags for empty tags.

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 © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

"""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 description
    verbose = _("Execute script before commit")
    description = _("This add-on 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 personalizate ale calității, add-on-uri și corecții automate.

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:

  • Conectați-vă. Șterge parola contului, împiedicând utilizatorul să se conecteze fără a solicita o nouă parolă.

  • Resetarea parolei. Î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.

How many days will Weblate reject reusing previously used password for an user.

The checking is based on the audit log, AUDITLOG_EXPIRY needs to be at least same as this.

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.

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.

Puteți trece argumente suplimentare la borg create atunci când sunt declanșate copiile de rezervă încorporate.

Exemplu:

BORG_EXTRA_ARGS = ["--exclude", "vcs/"]

CACHE_DIR

Nou în versiunea 4.16.

Directory where Weblate stores cache files. Defaults to cache subfolder in DATA_DIR.

Change this to local or temporary filesystem if DATA_DIR is on a network filesystem.

Containerul Docker utilizează un volum separat pentru acest lucru, vezi Volumele containerelor Docker.

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.

fonts:

Fonturi încărcate de utilizator, vezi Gestionarea fonturilor.

cache

Various caches, can be placed elsewhere using CACHE_DIR.

Containerul Docker utilizează un volum separat pentru acest lucru, vezi Volumele containerelor Docker.

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 /home/weblate/data, dar este de așteptat ca aceasta să fie configurată.

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

Configurează titlul și mesajul implicite pentru cererile de extragere.

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.

EXTRA_HTML_HEAD

Nou în versiunea 4.15.

Insert additional markup into HTML header. Can be used for verification of site ownership, for example:

EXTRA_HTML_HEAD = '<link href="https://fosstodon.org/@weblate" rel="me">'

Atenționare

No sanitization is performed on the string, it is inserted as is into the HTML header.

GET_HELP_URL

Nou în versiunea 4.5.2.

URL-ul unde poate fi găsit suport pentru instanța Weblate.

GITEA_CREDENTIALS

Nou în versiunea 4.12.

Lista de acreditări pentru serverele Gitea.

GITEA_CREDENTIALS = {
    "try.gitea.io": {
        "username": "weblate",
        "token": "your-api-token",
    },
    "gitea.example.com": {
        "username": "weblate",
        "token": "another-api-token",
    },
}

GITLAB_CREDENTIALS

Nou în versiunea 4.3.

Lista pentru acreditările pentru serverele GitLab.

GITLAB_CREDENTIALS = {
    "gitlab.com": {
        "username": "weblate",
        "token": "your-api-token",
    },
    "gitlab.example.com": {
        "username": "weblate",
        "token": "another-api-token",
    },
}

GITHUB_CREDENTIALS

Nou în versiunea 4.3.

Lista pentru acreditările pentru serverele GitHub.

GITHUB_CREDENTIALS = {
    "api.github.com": {
        "username": "weblate",
        "token": "your-api-token",
    },
    "github.example.com": {
        "username": "weblate",
        "token": "another-api-token",
    },
}

BITBUCKETSERVER_CREDENTIALS

Nou în versiunea 4.16.

List for credentials for Bitbucket servers.

BITBUCKETSERVER_CREDENTIALS = {
    "git.self-hosted.com": {
        "username": "weblate",
        "token": "http-access-token",
    },
}

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.

INDICATORI_DE_PLATĂ_INTERLEDGER

Nou în versiunea 4.12.1.

Listă de indicatori de plată Interledger (ILP) pentru monetizarea web.

În cazul în care sunt specificate mai multe, împărțirea probabilistică a veniturilor se realizează prin selectarea aleatorie a uneia dintre ele.

Vă rugăm să consultați <https://webmonetization.org/> pentru mai multe detalii.

Sugestie

Valoarea implicită permite utilizatorilor să finanțeze ei înșiși Weblate.

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ă add-on-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 adrese URL pe care doriți să le solicitați la conectare. (În afară de regulile standard încorporate î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

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.

PAGURE_CREDENTIALS = {
    "pagure.io": {
        "username": "weblate",
        "token": "your-api-token",
    },
    "pagure.example.com": {
        "username": "weblate",
        "token": "another-api-token",
    },
}

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

PRIVATE_COMMIT_EMAIL_OPT_IN

Nou în versiunea 4.15.

Configures whether the private commit e-mail is opt-in or opt-out (by default it is opt-out).

PRIVATE_COMMIT_EMAIL_TEMPLATE

Nou în versiunea 4.15.

Template to generate private commit e-mail for an user. Defaults to "{username}@users.noreply.{site_domain}".

Set to blank string to disable.

Notă

Using different commit e-mail is opt-in for users unless configured by PRIVATE_COMMIT_EMAIL_OPT_IN. Users can configure commit e-mail in the Profil.

PROIECT_COPIE DE REZERVĂ_PĂSTRARE_NUMĂR

Nou în versiunea 4.14.

Definește câte copii de rezervă pentru fiecare proiect sunt păstrate pe server. Valoarea implicită este de 3.

ZILE_DE_MENȚINERE_DE_BACKUP_DE_PROIECT

Nou în versiunea 4.14.

Definește cât timp vor fi păstrate pe server copiile de rezervă ale proiectului. Valoarea implicită este de 30 de zile.

PROJECT_NAME_RESTRICT_RE

Nou în versiunea 4.15.

Defines a regular expression to restrict project naming. Any matching names will be rejected.

Vezi și

Denumire proiect

PROJECT_WEB_RESTRICT_HOST

Nou în versiunea 4.16.2.

Reject using certain hosts in project website. Any subdomain is matched, so including example.com will block test.example.com as well. The list should contain lower case strings only, the parsed domain is lower cased before matching.

Default configuration:

PROJECT_WEB_RESTRICT_HOST = {"localhost"}

PROJECT_WEB_RESTRICT_NUMERIC

Nou în versiunea 4.16.2.

Reject using numeric IP address in project website. Enabled by default.

PROJECT_WEB_RESTRICT_RE

Nou în versiunea 4.15.

Defines a regular expression to restrict project websites. Any matching URLs will be rejected.

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.

REGISTRATION_REBIND

Nou în versiunea 4.16.

Allow rebinding authentication backends for existing users. Turn this on when migrating between authentication providers.

Notă

Disabled by default to not allow adding other authentication backends to existing account. Rebinding can lead to account compromise when using more third-party authentication backends.

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.

Permite adăugarea de parametri personalizați atunci când Weblate invocă SSH. Acest lucru este util atunci când vă conectați la servere care utilizează criptarea tradițională sau alte caracteristici non-standard.

De exemplu, atunci când conexiunea SSH în Weblate eșuează cu Unable to negotiate with legacyhost: nu s-a găsit nicio metodă de schimb de chei corespunzătoare. Oferta lor: diffie-hellman-group1-sha1, o puteți activa folosind:

SSH_EXTRA_ARGS = "-oKexAlgorithms=+diffie-hellman-group1-sha1"

Sugestie

Șirul de caractere este evaluat de shell, așa că asigurați-vă că ați citat toate spațiile albe și caracterele speciale.

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.

Atenționare

În acest caz, afișajul limbilor ar putea deveni incoerent. Definițiile de limbă Weblate se extind în timp și nu va afișa codul limbii pentru limbile definite.

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_API_DELAY

Nou în versiunea 4.15.1.

Configures minimal delay in seconds between third-party API calls in GitHub solicitări de tracțiune, Cereri de fuziune GitLab, Gitea cereri de pull, and Cereri de fuziune Pagure.

This rate-limits API calls from Weblate to these services to avoid overloading them.

If you are being limited by secondary rate limiter at GitHub, increasing this might help.

The default value is 10.

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 add-on-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 add-ons
    "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.xml.XMLCustomizeAddon",
    "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 add-onului din listă nu îl dezinstalează din componente. În acest caz, Weblate se va bloca. Vă rugăm să dezinstalați add-on-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_MAȘINĂRII

Nou în versiunea 4.13.

Lista serviciilor de mașini disponibile pentru utilizare.

Vezi și

/admin/mașină

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 © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

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,
        # Disable server-side cursors, might be needed with pgbouncer
        "DISABLE_SERVER_SIDE_CURSORS": False,
    }
}

# Data directory, you can use following for the development purposes:
# os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "data")
DATA_DIR = "/home/weblate/data"
CACHE_DIR = f"{DATA_DIR}/cache"

# 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(CACHE_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-generate-secret-key
SECRET_KEY = ""

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",
            ],
        },
        "APP_DIRS": True,
    }
]


# GitHub username and token for sending pull requests.
# Please see the documentation for more details.
GITHUB_CREDENTIALS = {}

# GitLab username and token for sending merge requests.
# Please see the documentation for more details.
GITLAB_CREDENTIALS = {}

# Bitbucket username and token for sending merge requests.
# Please see the documentation for more details.
BITBUCKETSERVER_CREDENTIALS = {}

# Authentication configuration
AUTHENTICATION_BACKENDS = (
    "social_core.backends.email.EmailAuth",
    # "social_core.backends.google.GoogleOAuth2",
    # "social_core.backends.github.GithubOAuth2",
    # "social_core.backends.bitbucket.BitbucketOAuth2",
    # "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_GITHUB_ORG_KEY = ""
SOCIAL_AUTH_GITHUB_ORG_SECRET = ""
SOCIAL_AUTH_GITHUB_ORG_NAME = ""

SOCIAL_AUTH_GITHUB_TEAM_KEY = ""
SOCIAL_AUTH_GITHUB_TEAM_SECRET = ""
SOCIAL_AUTH_GITHUB_TEAM_ID = ""

SOCIAL_AUTH_BITBUCKET_OAUTH2_KEY = ""
SOCIAL_AUTH_BITBUCKET_OAUTH2_SECRET = ""
SOCIAL_AUTH_BITBUCKET_OAUTH2_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",
    "corsheaders.middleware.CorsMiddleware",
    "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",
    "crispy_bootstrap3",
    "compressor",
    "rest_framework",
    "rest_framework.authtoken",
    "django_filters",
    "django_celery_beat",
    "corsheaders",
]

# 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

DEFAULT_LOG = "console" if DEBUG or not HAVE_SYSLOG else "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
SECURE_SSL_HOST = SITE_DOMAIN
# 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
# Allow more fields for case with a lot of subscriptions in profile
DATA_UPLOAD_MAX_NUMBER_FIELDS = 2000

# 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_ALLOWED_TEMPLATE_PACKS = "bootstrap3"
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.generate.PrefillAddon",
#     "weblate.addons.json.JSONCustomizeAddon",
#     "weblate.addons.xml.XMLCustomizeAddon",
#     "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",
        "TIMEOUT": 3600,
    },
    "avatar": {
        "BACKEND": "django.core.cache.backends.filebased.FileBasedCache",
        "LOCATION": os.path.join(CACHE_DIR, "avatar"),
        "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": "weblate.api.pagination.StandardPagination",
    "PAGE_SIZE": 50,
    "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
#    rf"{URL_PREFIX}/avatar/(.*)$",  # Optional for avatars
# )

# 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_SCHEDULER = "django_celery_beat.schedulers:DatabaseScheduler"
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"},
}

# CORS allowed origins
CORS_ALLOWED_ORIGINS = []
CORS_URLS_REGEX = r"^/api/.*$"

# 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 utilizând programul de instalare pip sau scriptul ./setup.py, comanda weblate este instalată în calea dumneavoastră (sau în calea virtualenv), de unde o puteți utiliza 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.

You can either define which project or component to update (for example weblate/application), or use --all to update all existing components, or use --file-format to filter based on the file format.

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.

chei_ssh_curățare

weblate cleanup_ssh_keys

Nou în versiunea 4.9.1.

Efectuează curățarea cheilor de gazdă SSH stocate:

  • Elimină cheile RSA depreciate pentru GitHub, care ar putea cauza probleme de conectare la GitHub.

  • Elimină intrările duplicate din cheile de gazdă.

Vezi și

Depozite SSH

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 utilizare ulterioară 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>. Asigurați-vă că sarcinile celery sunt în curs de execuție înainte de a rula această comandă.

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.

Importul pe loturi de componente în proiect se bazează pe masca 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 anunț 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 anunț 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

2

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 conecteze AUTH_LOCK_ATTEMPTS de mai multe ori, autentificarea prin parolă va fi dezactivată pentru contul respectiv până când va trece 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.

To write a file with custom Python code (called a module), a place to store it is needed, either in the system path (usually something like /usr/lib/python3.9/site-packages/) or in the Weblate directory, which is also added to the interpreter search path.

Nou în versiunea 3.8-5: When using Docker, you can place Python modules in /app/data/python/ (see Volumele containerelor Docker), so they can be loaded by Weblate, for example from a settings override file.

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

Your package structure should look like this:

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 personalizate ale calității, add-on-uri și corecții automate

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

Use with caution as this is a low level interface. You should not need it in most cases as most things are comfortably approachable through Weblate UI or API.

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]

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 dvs., 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, utilizând Adaugați un nou șir de traducere din meniul Instrumente în limba sursă.

  • 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 add-on-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 add-onul 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 add-onul 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 add-onul 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

Indicarorii traducerii

rst-text

Configurația de descoperire a componentelor

Expresie regulată pentru a se potrivi cu fișierele de traducere

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 add-onul 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 add-on.

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 add-onului Weblate CDN

Add-on-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 acceptă 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.

Biblioteci și pachete de localizare

Weblate poate fi integrat în cadrul dumneavoastră folosind Weblate’s REST API. Această pagină enumeră bibliotecile terților care integrează Weblate.

Sugestie

Construiți o integrare Weblate pentru cadrul dumneavoastră? Fiți listat aici! Fie trimiteți o cerere de extragere cu modificările direct, fie scrieți-ne la care@weblate.org pentru a fi listat.

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

  • Masca 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

Urmarea acestor recomandări sprijină crearea unui instrument de post-editare complet și multilingv. Traducerile bune sunt definite prin intermediul modelului sistemic-funcțional al Casei, care vizează o traducere corectă din punct de vedere contextual. Scrieți-vă propriul ghid de post-editare și modificați aceste recomandări pentru a le adapta la propriile definiții. În majoritatea cazurilor, browser-plugin-ul languageTool este util ca instrument de corectare.

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

Managementul terminologiei

Post-editarea MT cu atribuirea terminologiei influențează fiecare nivel al procesului de traducere. Sistemul de traducere automată poate fi adaptat la vocabularul și stilul specific cu ajutorul unei formări continue sau a reparării fuzzy neuronale. Importați memoria dvs. de traducere existentă în weblate sau creați un domeniu inițial cu terminologia dvs. de bază. În final, lectorul ar trebui să fie instruit cu documente terminologice suplimentare pentru a garanta o bună cunoaștere și randament în domeniu.

Traducere automată

Calitatea traducerii automate (adesea măsurată cu scorul BLEU) este corelată cu timpul de editare [1]. Alegeți un backend de mașină care acceptă limbile și domeniile necesare. Explicați clar cum funcționează backend-ul de traducere și la ce calitate trebuie să se aștepte post-editorul.

Revizuirea traducerilor

Traducerile ar trebui să fie revizuite de o a doua persoană după post-editare. Cu un revizor imparțial și competent, regula celor două persoane reduce erorile și îmbunătățește calitatea și coerența conținutului.

Feedback structurat

Există multe Verificări și reparații în Weblate care oferă un feedback structurat asupra calității traducerilor.

Definiția traducerii

Pe lângă definițiile mentaliste și cele bazate pe impact, care realizează o reducere puternică, abordarea lingvistică bazată pe text se potrivește cel mai bine cu metodele de traducere implementate. O teorie bine formulată pentru evaluarea traducerilor este modelul sistemic-funcțional al lui House, care se concentrează pe relația dintre original și traducere. Modelul pornește de la premisa că traducerea este o încercare de a păstra echivalentul semantic, pragmatic și textual al unui text la trecerea de la un cod lingvistic la altul.

Gradul de calitate al unei traduceri se bazează pe gradul de echivalență, pe corespondența dintre profilul textului și funcția textului. Deoarece acesta nu poate fi calculat automat, ar trebui să se colecteze suficiente informații pentru a permite o evaluare umană uniformă. Cei doi parametri principali de concordanță într-un model corespunzător sunt macrocontextul - adică încadrarea într-un context social și literar mai larg - și microcontextul format din domeniu, tenor și mod.

Surse

  1. Marina Sanchez-Torron și Philipp Koehn în Machine Translation Quality and Post-Editor Productivity, Figura 1: https://www.cs.jhu.edu/~phi/publications/machine-translation-quality.pdf

  2. Joanna Best și Sylvia Kalina.Translating and Interpreting: an Orientation Guide. A. Francke Verlag Tübingen und Base, 2002. Posibilități de critică a traducerii începând cu pagina numărul 101

  3. Neural Fuzzy Repair, Bram Bulté și Arda Tezcan în Neural Fuzzy Repair: Integrating Fuzzy Matches into Neural MachineTranslation, 2019 https://aclanthology.org/P19-1175.pdf

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 de fișier nu necesită un astfel de fișier, așa 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 add-onului 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 prezent poate fi văzută făcând clic pe numele utilizatorului 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 limba sursă 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 caractere editate în ș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ă: Modificați sau întrebați. 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ă.

You are welcome to start working on these issues without asking. Just announce that in the issue, so that it’s clear that somebody is working on that issue.

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.sh
    ./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.

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.

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.

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.

Instrucțiuni de codificare

Orice cod pentru Weblate ar trebui să fie scris cu Security by Design Principles în minte.

Orice cod ar trebui să fie însoțit de o documentație care să explice comportamentul. Nu uitați de documentarea metodelor, a blocurilor de cod complexe sau a funcțiilor vizibile pentru utilizator.

Orice cod nou ar trebui să utilizeze indicii de tip PEP 484. Nu verificăm încă acest lucru în CI, deoarece codul existent nu le include încă.

Standardul de codare și linting-ul codului

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 conține o configurație pentru ca acesta să verifice dacă fișierele confirmate sunt sănătoase. După ce l-ați instalat (este deja inclus în requirements-lint.txt) activați-l prin rularea pre-commit install în Weblate checkout. În acest fel, toate modificările dumneavoastră 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

Defecțiunile se pot prezenta sub forma unor blocări ale aplicației sau a unor comportamente greșite. Sunteți bineveniți să colectați informații despre orice astfel de problemă și să o trimiteți la issue tracker.

Modul de depanare

Activarea modului de depanare va face ca excepțiile să fie afișate în browserul web. Acest lucru este util pentru depanarea problemelor din interfața web, dar nu este potrivit pentru un mediu de producție, deoarece are consecințe asupra performanței și poate duce la scurgeri de date private.

Într-un mediu de producție, utilizați ADMINS pentru a primi e-mailuri care conțin rapoarte de eroare sau configurați colectarea erorilor utilizând un serviciu terț.

Jurnalele Weblate

Weblate poate produce jurnale detaliate cu privire la ceea ce se întâmplă în fundal. În configurația implicită, utilizează syslog, ceea ce face ca jurnalul să apară fie în /var/log/messages, fie la /var/log/syslog (în funcție de configurația daemonului syslog).

Procesul Celery (a se vedea Sarcini de fundal folosind Celery) produce, de obicei, și propriile jurnale. Exemplul de configurare la nivel de sistem înregistrează jurnalele în mai multe fișiere în /var/log/celery/.

Containerele Docker înregistrează în jurnalul de ieșire (ca de obicei în lumea Docker), așa că vă puteți uita la jurnale folosind docker-compose logs.

Vezi și

Exemplu de configurare conține configurația LOGGING.

Nu se procesează sarcinile de fundal

O mulțime de lucruri sunt făcute în fundal de către lucrătorii de la Celery. Dacă lucruri precum trimiterea de e-mailuri sau eliminarea componentelor nu funcționează, este posibil să existe o problemă conexă.

Lucruri de verificat în acest caz:

Nu primiți e-mailuri de la Weblate

Puteți verifica dacă poșta electronică de ieșire funcționează corect utilizând comanda de gestionare sendtestemail (consultați Invocarea comenzilor de gestionare pentru instrucțiuni despre cum să o apelați în diferite medii) sau utilizând Interfața de gestionare din fila Tools.

Acestea trimit direct e-mailuri, astfel încât se verifică dacă configurația SMTP este corectă (a se vedea Configurarea e-mailului de ieșire). Majoritatea e-mailurilor de la Weblate sunt însă trimise în fundal și este posibil să existe și unele probleme cu Celery; vă rugăm să consultați Nu se procesează sarcinile de fundal pentru depanarea acestora.

Analiza accidentărilor aplicațiilor

În cazul în care aplicația se blochează, este util să se colecteze cât mai multe informații cu privire la blocaj. Acest lucru poate fi realizat prin utilizarea unor servicii terțe care pot colecta astfel de informații în mod automat. Puteți găsi informații despre cum să configurați acest lucru în 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ță

În cazul în care Weblate are performanțe slabe în anumite scenarii, vă rugăm să colectați jurnalele relevante care arată problema, precum și orice lucru care ar putea ajuta la identificarea domeniilor în care codul ar putea fi îmbunătățit.

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

În cazul în care performanța lentă este legată de baza de date, puteți, de asemenea, să activați jurnalizarea tuturor interogărilor bazei de date utilizând următoarea configurație după activarea DEBUG:

LOGGING["loggers"]["django.db.backends"] = {"handlers": ["console"], "level": "DEBUG"}

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 add-on-uri

Extensii sunt o modalitate de a personaliza fluxul de lucru al localizării în Weblate.

class weblate.addons.base.BaseAddon(storage=None)

Clasa de bază pentru add-on-urile Weblate.

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.

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 add-on:

# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

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

Managerul de pachete yarn este utilizat pentru a actualiza bibliotecile terților. Configurația se află în scripts/yarn și există un script de tip wrapper scripts/yarn-update care actualizează bibliotecile, le construiește și le copiază în locațiile corecte din weblate/static/vendor, unde se află tot codul frontend parțial terț. Codul specific Weblate ar trebui plasat direct în weblate/static sau în subdirectoare specifice caracteristicilor (de exemplu 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.

If you don’t want to use HackerOne, for whatever reason, you can send the report by e-mail to michal@weblate.org. You can choose to encrypt it using this PGP key 3CB 1DF1 EF12 CF2A C0EE 5A32 9C27 B313 42B7 511D. You can also get the PGP key from 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ă

Current test results can be found on GitHub Actions and coverage is reported on 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:

# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

# Simple way to configure test database from environment

# shellcheck shell=sh

# 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.sh
./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:

# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

# Simple way to configure test database from environment

# shellcheck shell=sh

# 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

  • category

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

  • basic

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

formatul

e-mail

  • ** data _ a aderat **

Data aderării

tip

șir

exemple

2019-11-18T18:53:54.862Z

implicit

formatul

dată-timp

Proprietățisuplimentare

Fals

  • 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

  • vizionat

Proiecte vizionate

tip

array

implicit

elemente

Denumire proiect

tip

șir

exemple

weblate

model

^.*$

implicit

Proprietățisuplimentare

Fals

  • auditlog

Audit log

tip

array

implicit

elemente

Elemente

tip

obiect

proprietăți

  • address

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

  • timestamp

Timbrare

tip

șir

exemple

2019-11-18T18:58:30.845Z

implicit

formatul

dată-timp

  • activitate

Activitate

tip

șir

exemple

autentificare

model

^.*$

implicit

Proprietățisuplimentare

Fals

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 -j 12 -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.

  8. Verificați dacă readthedocs.org a construit toate traducerile documentației folosind ./scripts/rtd-projects.

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.

Security updates

Only the latest release is guaranteed to receive security updates.

Urmărirea dependențelor pentru vulnerabilități

Problemele de securitate din dependențele noastre sunt monitorizate cu ajutorul Dependabot. Aceasta acoperă bibliotecile Python și JavaScript, iar cea mai recentă versiune stabilă are dependențele sale actualizate pentru a evita vulnerabilitățile.

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

Containerele Docker sunt scanate în mod regulat cu ajutorul scanerelor de securitate Anchore și Trivy.

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

Contribuire la modulele Weblate

În afară de depozitul principal, Weblate este format din mai multe module Python. Toate acestea urmează aceeași structură și această documentație le acoperă pe toate.

De exemplu, aceasta acoperă:

Instrucțiuni de codificare

Orice cod pentru Weblate ar trebui să fie scris cu Security by Design Principles în minte.

Orice cod ar trebui să fie însoțit de o documentație care să explice comportamentul. Nu uitați de documentarea metodelor, a blocurilor de cod complexe sau a funcțiilor vizibile pentru utilizator.

Orice cod nou ar trebui să utilizeze indicii de tip PEP 484. Nu verificăm încă acest lucru în CI, deoarece codul existent nu le include încă.

Rularea testelor

Testele sunt executate folosind py.test. Mai întâi trebuie să instalați cerințele de testare:

pip install -r requirements-test.txt

Apoi puteți executa suita de teste în cadrul verificării depozitului:

py.test

Vezi și

Integrarea CI este foarte asemănătoare cu Weblate testsuite și integrare continuă.

Standardul de codare și linting-ul codului

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 conține o configurație pentru ca acesta să verifice dacă fișierele confirmate sunt sănătoase. După ce l-ați instalat (este deja inclus în requirements-lint.txt) activați-l prin rularea pre-commit install în Weblate checkout. În acest fel, toate modificările dumneavoastră vor fi verificate automat.

De asemenea, puteți declanșa verificarea manual, pentru a verifica toate fișierele rulate:

pre-commit run --all

Despre Weblate

Obiectivele proiectului

Instrument de localizare continuă bazat pe web, cu Integrarea controlului versiunilor care suportă o gamă largă de formate de fișiere file formats, 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

This project is maintained by Michal Čihař, who can be reached at michal@weblate.org.

Autori

Weblate a fost inițiat de Michal Čihař. De la înființarea sa în 2012, mii de oameni au contribuit.

Licență

More detailed licensing information is available in the Weblate source code and follows REUSE 3.0 specification.

Copyright © Michal Čihař michal@weblate.org

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

Released on March 8th 2023.

  • Fixed searching in the translation memory.

  • Fixed automatic translation with more services.

  • Improved rendering of overlapping glossary term matches.

  • Fixed plurals parsing for non-English source language in some formats.

  • Added support for go-i18n v2 JSON files.

All changes in detail.

Weblate 4.16.1

Released on March 1st 2023.

  • Fixed testsuite error.

All changes in detail.

Weblate 4.16

Released on March 1st 2023.

  • Format string checks now also detects duplicated formats.

  • Improved search performance for some specially formatted strings.

  • Celery beat is now storing the tasks schedule in the database.

  • Added support for IBM Watson Language Translator.

  • Dropped support for VCS integration settings deprecated in 4.14.

  • Added support for Bitbucket Server pull requests.

  • Improved conflicts handling in gettext PO files.

  • Added support for defining strings state when adding via API.

  • Added support for configuring CORS allowed origins.

  • Added plurals support to automatic suggestions.

All changes in detail.

Weblate 4.15.2

Released on January 25th 2023.

  • Enabled gotext JSON and i18next v4 formats in the default configuration.

  • Fixed crash on uploading corrupted files.

  • Show stale directories in Git repository status.

All changes in detail.

Weblate 4.15.1

Released on January 19th 2023.

  • Fixed suggestions from automatic translation.

  • Fixed add-on page crash in some corner cases.

  • Fixed untranslating template for new translations in some cases.

  • Documented licensing using REUSE 3.0.

  • Fixed users pagination on team management.

  • Improved performance of project creation and saving.

  • Added support for gotext JSON files.

  • Added support for i18next v4 files.

  • Pagination in the API is now customizable.

All changes in detail.

Weblate 4.15

Released on December 16th 2022.

  • A fost adăugat suport pentru navigarea modificărilor pentru un singur șir de caractere.

  • A fost reparată gestionarea pluralului în traducerea automată din alte componente.

  • A fost adăugată comanda rapidă de la tastatură Alt+Intro pentru a trimite un șir de caractere ca sugestie.

  • Adăugat suportul pentru elementele locuibile în formatul Fluent.

  • Îmbunătățirea performanțelor memoriei de traducere.

  • Autogenerate repoweb browsing links for well known code hosting services.

  • Improved performance of several views.

  • Improved listing of strings with plurals.

  • Added support for adding custom markup to HTML head.

  • Fixed generation of MO files in the add-on to include only translated files.

  • Fixed rendering of regular expression flags.

  • Improved placeholders check behavior with plurals.

  • Added support for translation files naming suitable for Google Play.

  • Added support for labels in API.

  • Added support for choosing different e-mail for commits than for notifications.

  • The Docker image no longer enables debug mode by default.

  • Order glossary terms based on the glossary component priority.

  • Added team administrators who can add or remove members of the team.

  • Added a popup confirmation before deleting users.

  • Added add-on to customize XML output.

Toate modificările în detaliu.

Weblate 4.14.2

Lansat pe 5 noiembrie 2022.

  • A fost adăugat suport pentru eliminarea intrărilor din memoria de traducere.

  • A fost îmbunătățită analiza alertei de limbă duplicată.

  • A fost îmbunătățită acuratețea verificării cuvintelor duplicate consecutive.

  • Îmbunătățirea scalării pentru trimiterea mai multor notificări.

  • A fost îmbunătățită gestionarea stării șirurilor de caractere pentru traducerea subtitrărilor.

  • A fost eliminată configurarea nesigură a cheilor API ale serviciului VCS prin intermediul configurației _TOKEN/_USERNAME în loc de lista _CREDENTIALS.

  • S-a reparat procesarea unor fișiere CSV încărcate.

  • A fost îmbunătățită gestionarea modificărilor de spații albe în afișarea diferențelor.

  • A fost adăugat un link de gestionare automată a sugestiilor la paginile de gestionare.

  • Urmăriți eliminarea/rezolvarea comentariilor în istoric.

  • A fost reparată restaurarea copiilor de rezervă ale proiectelor cu componente legate.

  • A fost reparată introducerea captcha la înregistrarea nereușită.

  • Îmbunătățirea suportului lingvistic în DeepL.

  • A fost îmbunătățită compatibilitatea webhooks cu depozitele autentificate.

  • A fost adăugat suport pentru Python 3.11.

`Toate modificările în detaliu <https://github.com/WeblateOrg/weblate/milestone/87?closed=1>``__.

Weblate 4.14.1

Lansat pe 15 septembrie 2022.

  • A fost reparată generarea de copii de rezervă ale proiectelor în anumite situații.

  • A fost îmbunătățită raportarea erorilor la încărcarea fișierelor.

  • Obțineți toate e-mailurile verificate de utilizator de la GitHub în timpul autentificării.

  • Evitați să potriviți termenii din glosar cu contextul sau cu cheile.

  • S-au adăugat notificări pentru eliminarea șirurilor de caractere.

  • Gestionarea îmbunătățită a termenilor intraductibili din glosar.

  • Indicați numărul de membri ai echipei pe pagina de gestionare a echipei.

  • Adăugați o interfață de gestionare a grupului.

  • Afișați întotdeauna statisticile de recenzii atunci când sunt activate recenziile.

  • A fost adăugat suportul de căutare în API pentru unități.

  • A fost reparată afișarea barei de progres pentru șirurile de caractere numai pentru citire în fluxul de lucru de revizuire.

  • A fost îmbunătățită verificarea punctuației birmane.

  • A fost reparată colectarea inutilă a datelor de măsurare.

`Toate modificările în detaliu <https://github.com/WeblateOrg/weblate/milestone/86?closed=1>``__.

Weblate 4.14

Lansat pe 21 august 2022.

  • Urmăriți modificările add-on-urilor într-un istoric.

  • A fost reparată traducerea parsing din Windows RC, HTML și fișiere text.

  • Opțiuni de configurare a stilului de cod lingvistic extins.

  • A fost adăugat suport pentru pluralul actualizat în versiunile recente ale CLDR.

  • Reducerea utilizării memoriei la actualizarea componentelor cu multe traduceri.

  • A fost adăugat suport pentru domeniul de traducere în SAP Translation Hub.

  • Permiterea legăturilor absolute în locațiile șirului sursă.

  • Îmbunătățirea funcționării în spatele unor proxy-uri inverse.

  • API extinsă pentru a acoperi memoria de traducere.

  • Îmbunătățirea fluxului de lucru pentru traducerea documentelor.

  • Îmbunătățirea fiabilității traducerii fișierelor HTML și text.

  • A fost adăugat suport pentru copii de rezervă la nivel de proiect.

  • Îmbunătățirea performanțelor și a utilizării memoriei în cazul căutărilor în memoria de traducere.

`Toate modificările în detaliu <https://github.com/WeblateOrg/weblate/milestone/84?closed=1>``__.

Weblate 4.13.1

Lansat la 1 iulie 2022.

  • S-a rezolvat problema sugestiilor de urmărire în istoric.

  • A fost reparată analizarea informațiilor de proxy invers de la Cloudflare.

  • Face ca eroarea de analiză să blocheze traducerea unei componente.

  • A fost reparată configurarea fișierului intermediar în add-on-ul de descoperire.

  • A fost corectat comportamentul traducerilor DeepL cu caractere de poziție.

  • A fost reparată descotorosirea șirurilor de caractere prin API.

  • A fost adăugat suport pentru eliminarea unui utilizator dintr-un grup prin API.

  • A fost reparat jurnalul de audit pentru e-mailurile de invitație a utilizatorilor.

  • A corectat numele indicatoarelor pentru șirurile de formatare Java.

Toate modificările în detaliu.

Weblate 4.13

Lansat pe 15 iunie 2022.

  • A fost modificat comportamentul de actualizare a numelor de limbi.

  • A fost adăugată paginarea la lista de proiecte.

  • API pentru crearea de noi unități returnează acum informații despre unitatea nou creată.

  • Descoperirea componentelor acceptă acum configurarea unui limbaj intermediar.

  • Au fost adăugate variante fixe de codificare la formatele CSV.

  • S-a modificat modul de gestionare a contextului și a locației pentru unele formate pentru a se adapta mai bine la implementarea de bază.

  • A fost adăugat suport pentru formatul ResourceDictionary.

  • Îmbunătățirea culorilor barei de progres pentru daltoniști.

  • S-a reparat curățarea variantelor la eliminarea șirurilor de caractere.

  • Compatibilitate cu Django 4.1.

  • S-a adăugat suport pentru stocarea elementelor XML scăpate în XLIFF.

  • A fost îmbunătățită formatarea erorilor de verificare a locurilor.

  • Redirecționează /.well-known/change-password către /accounts/password/.

  • Serviciile de traducere automată sunt acum configurabile pentru fiecare proiect în parte.

  • A fost adăugată o permisiune separată pentru rezolvarea comentariilor și a fost acordată rolului Review strings.

  • A fost adăugat suport pentru stocarea traducerilor alternative în fișierul CSV.

  • De asemenea, verificarea marcajelor de poziție poate fi acum insensibilă la majuscule și minuscule.

`Toate modificările în detaliu <https://github.com/WeblateOrg/weblate/milestone/81?closed=1>``__.

Weblate 4.12.2

Lansat pe 11 mai 2022.

  • A fost reparată reconstruirea memoriei de traducere a proiectului pentru unele componente.

  • S-a reparat sortarea componentelor în funcție de șirurile netraduse.

  • A fost reparată posibila pierdere a traducerilor la adăugarea unei noi limbi.

  • Asigurați-vă că cheia SSH Weblate este generată în timpul migrărilor.

Toate modificările în detaliu.

Weblate 4.12.1

Lansat pe 29 aprilie 2022.

  • A fost corectat titlul mesajului de cerere de tip pull request.

  • Gestionarea îmbunătățită a erorilor de sintaxă în formatul Fluent.

  • S-a remediat afișarea avatarului în e-mailurile de notificare.

  • Adăugați suport pentru monetizarea web.

  • A fost reparată eliminarea șirurilor sursă vechi la eliminarea traducerilor.

Toate modificările în detaliu.

Weblate 4.12

Lansat pe 20 aprilie 2022.

  • A fost adăugat suport pentru Amharic în Punct final nepotrivit.

  • A fost adăugat suport pentru birmaneză în Semn de întrebare nepotrivit.

  • Opțiuni extinse ale suplimentului Generarea de pseudolocale.

  • S-a adăugat indicatorul ignore-all-checks pentru a ignora toate verificările de calitate dintr-un șir.

  • Evitați ca add-on-ul Generarea de pseudolocale să declanșeze verificări nereușite.

  • A fost adăugat suport pentru Gitea cereri de pull.

  • A fost adăugat codul limbii în stil Linux la Stil de cod lingvistic.

  • A fost adăugat suport pentru reconstruirea memoriei de traducere a proiectului.

  • API îmbunătățit pentru crearea de componente dintr-un fișier.

  • Adăugați butoane de copiere și clonare la alte traduceri.

  • Faceți ca mesajul de cerere de fuziune să fie configurabil la nivel de componentă.

  • A fost îmbunătățit comportamentul de restricție a lungimii maxime cu etichete XML.

  • A fost reparată încărcarea fișierelor Fluent cu comentarii suplimentare.

Toate modificările în detaliu.

Weblate 4.11.2

Lansat pe 4 martie 2022.

  • S-au remediat fișierele MO corupte în versiunea binară.

Toate modificările în detaliu.

Weblate 4.11.1

Lansat pe 4 martie 2022.

  • A fost reparată lipsa de igienizare a argumentelor pentru Git și Mercurial - CVE-2022-23915, vezi GHSA-3872-f48p-pxqj pentru mai multe detalii.

  • S-a remediat încărcarea șirurilor neclare din fișierele CSV.

  • A fost adăugat suport pentru crearea de echipe prin intermediul API.

  • S-a reparat afișarea sugestiilor de mențiuni ale utilizatorilor.

  • Accesul token-urilor de proiect poate fi acum personalizat.

Toate modificările în detaliu.

Weblate 4.11

Lansat pe 25 februarie 2022.

  • Fixes stored XSS - CVE-2022-24710, vezi GHSA-6jp6-9rf9-gc66 pentru mai multe detalii.

  • A fost reparată crearea de add-onuri utilizând API.

  • Redenumit Strings needing action în Unfinished strings.

  • Au fost corectate cazurile fals pozitive din Sintaxa ICU MessageFormat.

  • Indicați acordul de blocare și acordul contributorului pe lista altor evenimente.

  • S-a reparat actualizarea fișierelor PO cu șiruri de caractere învechite sau cu plural lipsă.

  • A fost îmbunătățită compatibilitatea add-on-ului squash cu Gerrit.

  • Inițializează automat limbile utilizatorilor pe baza antetului Accept-Language.

  • A fost îmbunătățită gestionarea erorilor la eliminarea șirurilor de caractere.

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

  • Corectarea unor operații de scriere cu autentificarea cu token de proiect.

  • A fost reparată urmărirea stării șirurilor de caractere atunci când acestea se modifică în depozit.

  • Urmăriți modificările de șiruri din depozit.

  • Antet lipicios pe lista de traduceri pentru a îmbunătăți navigarea.

  • S-a reparat necorelarea șirurilor de caractere în Proprietăți Java.

  • A fost reparată operațiunea Git cu nume de ramură non-ascii.

  • Un nou add-on Preumplerea traducerii cu sursa.

  • Adăugat Merge fără fast-forward Stil de fuziune.

  • Fixat Traducere automată declanșarea add-on-ului pe șirurile nou adăugate.

  • Verificări îmbunătățite ale punctuației pentru limba birmană.

  • A fost adăugat suport pentru definirea echipelor personalizate la nivel de proiect pentru a acorda acces utilizatorilor, vezi Gestionarea controlului accesului pe proiect.

  • Au fost adăugate linkuri de documentare la alerte.

  • Containerul Docker activează automat TLS/SSL pentru e-mailul de ieșire atunci când este necesar.

  • A fost adăugat suport pentru căutarea comentariilor rezolvate.

  • A fost adăugat suport pentru borgbackup 1.2.

  • S-a rezolvat aplicarea etichetei Tradus automat.

Toate modificările în detaliu.

Weblate 4.10.1

Lansat pe 22 decembrie 2021.

  • Modificări documentate introduse prin actualizarea la Django 4.0.

  • A fost reparată afișarea etichetei Automatically translated.

  • A fost reparată afișarea API a ramurii în componentele cu un depozit partajat.

  • S-a îmbunătățit analiza alertei push eșuate.

  • A fost reparată editarea manuală a paginii atunci când navigarea se modifică.

  • A fost îmbunătățită acuratețea Scrisoarea Kashida folosită.

  • Containerul Weblate Docker utilizează acum Python 3.10.

Toate modificările în detaliu.

Weblate 4.10

Lansat pe 16 decembrie 2021.

  • A fost adăugat suportul pentru formalități și spații libere cu DeepL.

  • Editarea în bloc și căutarea și înlocuirea sunt acum disponibile la nivel de proiect și de limbă.

  • A fost adăugată filtrarea la căutare și înlocuire.

  • Corect: Privilegiul „Efectuarea traducerii automate” nu mai face parte din grupul Languages.

  • „Efectuarea traducerii automate” se află în Administrare și în noul grup Traducerea automată.

  • S-a remediat generarea de fișiere XLSX cu caractere speciale.

  • A fost adăugată posibilitatea ca backend-ul de autentificare GitHub să verifice dacă utilizatorul aparține unei anumite organizații sau echipe GitHub.

  • A fost îmbunătățit feedback-ul privind parametrii nevalabili transmis către API.

  • A fost adăugat suportul pentru token-uri de acces la proiect pentru API.

  • A fost reparată eliminarea șirurilor de caractere în unele cazuri.

  • A fost reparată traducerea șirurilor nou adăugate.

  • Etichetați șirurile traduse automat pentru a facilita filtrarea acestora.

`Toate modificările în detaliu <https://github.com/WeblateOrg/weblate/milestone/74?closed=1>``__.

Weblate 4.9.1

Lansat pe 19 noiembrie 2021.

  • Încărcarea fixă a fișierelor monolingve după schimbarea șablonului.

  • Gestionarea îmbunătățită a spațiilor albe în indicatori.

  • Adăugați suport pentru filtrare în API de descărcare.

  • A fost reparată afișarea statisticilor la adăugarea de noi traduceri.

  • Atenuați problemele legate de schimbarea cheilor SSH GitHub.

`Toate modificările în detaliu <https://github.com/WeblateOrg/weblate/milestone/73?closed=1>``__.

Weblate 4.9

Lansat pe 10 noiembrie 2021.

  • Oferiți mai multe detalii pentru evenimentele din istorie.

  • Redarea îmbunătățită a istoricului.

  • A fost îmbunătățită performanța paginilor de traducere.

  • A fost adăugat suport pentru restricționarea descărcărilor de fișiere de traducere.

  • safe-html poate înțelege acum Markdown atunci când este folosit cu md-text.

  • Eticheta max-length ignoră acum marcajele XML atunci când este utilizată cu xml-text.

  • Fixarea dimensiunilor textelor redate în Dimensiunea maximă a traducerii.

  • Reducerea lungimii titlului din magazinul de aplicații la 30 pentru a contribui la viitoarele modificări ale politicii Google.

  • A fost adăugat suport pentru personalizarea invocării SSH prin SSH_EXTRA_ARGS.

  • Au fost adăugate verificări pentru ICU MessageFormat.

  • Gestionarea îmbunătățită a condițiilor de eroare în backend-urile de traducere automată.

  • Evidențiați caracterele neobișnuite ale spațiilor albe din șirurile de caractere.

  • A fost adăugată opțiunea de a rămâne pe șirul tradus în timpul editării.

  • A fost adăugat suport pentru personalizarea invocării Borg prin BORG_EXTRA_ARGS.

  • A fost reparată generarea de fișiere MO pentru traducerile monolingve.

  • A fost adăugat un endpoint API pentru a descărca toate traducerile componentelor sub forma unui fișier ZIP.

  • A fost adăugat suport pentru Python 3.10.

  • A fost adăugat suport pentru retrimiterea invitațiilor prin e-mail din interfața de gestionare.

`Toate modificările în detaliu <https://github.com/WeblateOrg/weblate/milestone/71?closed=1>``__.

Weblate 4.8.1

Lansat pe 10 septembrie 2021.

  • A fost reparată eliminarea utilizatorilor din interfața de administrare Django.

  • Documentați mai detaliat parametrii add-on.

  • A fost corectată eroarea JavaScript din glosar.

  • Adăugați o limită la numărul de potriviri în verificarea coerenței.

  • Îmbunătățirea gestionării spațiilor libere în traducerile automate.

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

  • Ascundeți adresele de e-mail ale membrilor pentru administratorii de proiect.

  • Îmbunătățirea fuzionării gettext PO în caz de conflicte.

  • Îmbunătățirea evidențierii glosarului.

  • A fost îmbunătățit comportamentul indicatorului safe-html în cazul verificărilor XML.

  • A corectat mesajele de confirmare pentru componentele legate.

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

  • Operatorul de căutare exactă este acum sensibil la majuscule și minuscule în 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 cu detalii de facturare și a fluxului de lucru de găzduire Libre.

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

  • S-a remediat un accident la anumite măști de fișiere de componente.

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

  • A fost adăugat suport pentru șiruri de caractere numai - citire.

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

  • ACL-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.

  • Biblioteci JavaScript incluse în pachet actualizate.

  • 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 privind șirurile care necesită acțiune și șirurile netraduse.

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

  • Noi diagrame de activitate bazate pe SVG/JavaScript.

  • 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 traducerilor.

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

    • MyMemory

  • 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