Voliteľné moduly Weblate¶
Pre vaše nastavenie je dostupných niekoľko voliteľných modulov.
Git exporter¶
Poskytuje vám prístup na čítanie k podkladovému repozitáru Git pomocou HTTP(S).
Inštalácia¶
Pridajte
weblate.gitexportdo nainštalovaných aplikácií vsettings.py:INSTALLED_APPS += ("weblate.gitexport",)
Exportujte existujúce repozitáre migráciou vašej databázy po inštalácii:
weblate migrate
Rada
Git exporter je zapnutý v našom oficiálnom Docker obraze. Na jeho vypnutie použite:
WEBLATE_REMOVE_APPS=weblate.gitexport
Použitie¶
Modul sa automaticky pripojí k Weblate a nastaví URL exportovaného repozitára v Konfigurácia komponentu. Repozitáre sú dostupné pod časťou /git/ URL Weblate, napríklad https://example.org/git/weblate/main/.
Repozitáre pre verejne dostupné projekty je možné klonovať bez autentifikácie:
git clone 'https://example.org/git/weblate/main/'
Prístup na prehliadanie repozitárov s obmedzeným prístupom (s Súkromné riadenie prístupu alebo keď je povolené REQUIRE_LOGIN) vyžaduje API token, ktorý je možné získať vo vašom používateľskom profile:
git clone 'https://user:KEY@example.org/git/weblate/main/'
Poznámka
Weblate obsluhuje samotný repozitár Git, ale neobsluhuje objekty Git LFS. Pozrite si Git LFS pre podporované správanie. Klonujte repozitáre pomocou Git LFS z hlavného repozitára a pridajte Weblate ako ďalší vzdialený repozitár. Ak potrebujete iba súbory sledované Gitom, môžete klonovať z Weblate s GIT_LFS_SKIP_SMUDGE=1, aby ste preskočili sťahovanie objektov Git LFS.
Rada
Predvolene majú členovia skupiny Používatelia a anonymný používateľ prístup k repozitárom verejných projektov prostredníctvom rolí Prístup k repozitáru a Pokročilý používateľ.
Fakturácia¶
Toto sa používa na Hosted Weblate na definovanie fakturačných plánov, sledovanie faktúr a limitov využitia.
Inštalácia¶
1. Add weblate.billing to installed apps in
settings.py:
INSTALLED_APPS += ("weblate.billing",)
Spustite migráciu databázy na voliteľnú inštaláciu dodatočných databázových štruktúr pre modul:
weblate migrate
Vytvorenie a priradenie fakturačného plánu¶
Najprv musíte vytvoriť fakturačný plán na aktiváciu fakturácie. Prejdite do sekcie Administrácia (reprezentovanej ikonou kľúča) a otvorte obrazovku Nástroje. Odtiaľ prejdite do Django admin rozhrania.
V Django admin rozhraní nájdite sekciu BILLING a pridajte fakturačný plán. Napríklad môžete pridať plán Zdarma bez poplatkov.
Ak chcete priradiť fakturačný plán k existujúcemu projektu, môžete to urobiť aj v Django admin rozhraní pomocou možnosti Zákaznícke fakturácie.
Nakoniec, Django admin rozhranie poskytuje možnosť Faktúra na zaznamenávanie platieb vašich zákazníkov.
Použitie¶
Po inštalácii môžete ovládať fakturáciu v administrátorskom rozhraní. Používatelia s povolenou fakturáciou dostanú novú kartu Fakturácia vo svojom používateľskom profile.
Superužívatelia môžu zobraziť 20 najnovších záznamov auditu fakturácie na stránke s podrobnosťami o fakturácii. V časti Auditný záznam vyberte Zobraziť všetko a prehliadajte staršie záznamy pomocou ovládacích prvkov stránkovania.
Fakturačný modul navyše umožňuje používateľom vytvárať nové projekty a komponenty bez toho, aby boli superpoužívatelia (pozri Pridávanie prekladových projektov a komponentov). Toto je možné, keď sú splnené nasledujúce podmienky:
Fakturácia je v rámci svojich nakonfigurovaných limitov (akékoľvek prekročenie vedie k blokovaniu vytvárania projektov/komponentov) a zaplatená (ak jej cena nie je nulová)
Používateľ má oprávnenie Pridať projekty do pracovného priestoru pre pracovný priestor pokrytý fakturačným plánom.
Pri vytváraní projektu si používateľ môže vybrať, ktorý pracovný priestor má obsahovať projekt. Projekty vytvorené v pracovnom priestore s fakturáciou sa započítavajú do fakturačného plánu priradeného tomuto pracovnému priestoru. Používatelia s oprávnením Upraviť nastavenia pracovného priestoru môžu zobraziť a zaplatiť fakturačný plán; týmto používateľom sa odosielajú fakturačné e-mailové upozornenia. Podrobnosti nájdete v Fakturácia.
Právny modul¶
Toto sa používa na Hosted Weblate na poskytovanie požadovaných právnych dokumentov. Dodáva sa s prázdnymi dokumentmi a očakáva sa, že vyplníte nasledujúce šablóny v dokumentoch:
legal/documents/tos.htmlDokument podmienok poskytovania služby
legal/documents/privacy.htmlDokument zásad ochrany osobných údajov
legal/documents/summary.htmlKrátke zhrnutie podmienok poskytovania služby a zásad ochrany osobných údajov
legal/documents/contracts.htmlInformácie o subdodávateľovi
Právny modul vkladá tieto šablóny do Weblate. Jeho potvrdzovacia stránka používa legal/documents/tos.html a keď je dostupný odkaz na zásady ochrany osobných údajov, vyžaduje jednu dohodu pokrývajúcu podmienky poskytovania služby aj zásady ochrany osobných údajov. Toto je oddelené od LEGAL_URL a PRIVACY_URL, ktoré sú určené na odkazovanie na externe hosťované právne dokumenty z päty stránky, keď právny modul nie je povolený, alebo ako záložné riešenie pre skryté interné stránky. Keď je právny modul povolený, Weblate predvolene odkazuje na interné právne stránky.
Pri zmene podmienok služby alebo zásad ochrany osobných údajov upravte LEGAL_TOS_DATE, kedy by mali byť používatelia nútení súhlasiť s aktualizovanými dokumentmi.
Poznámka
Právne dokumenty pre službu Hosted Weblate prevádzkovanú spoločnosťou Weblate s.r.o. sú dostupné v tomto Git repozitári: <https://github.com/WeblateOrg/wllegal/tree/main/wllegal/templates/legal/documents>.
Pribalené podmienky služby a súvisiace právne dokumenty sú špecifické pre služby prevádzkované spoločnosťou Weblate s.r.o. Môžu slúžiť ako príklad implementácie, ale nemali by sa používať ako základ pre právne dokumenty iných služieb.
Inštalácia¶
1. Add weblate.legal to installed apps in
settings.py:
INSTALLED_APPS += ("weblate.legal",)
# Optional:
# Social auth pipeline to confirm TOS upon registration/subsequent sign in
SOCIAL_AUTH_PIPELINE = list(SOCIAL_AUTH_PIPELINE)
SOCIAL_AUTH_PIPELINE.insert(
SOCIAL_AUTH_PIPELINE.index("weblate.accounts.pipeline.second_factor") + 1,
"weblate.legal.pipeline.tos_confirm",
)
# Middleware to enforce TOS confirmation of signed in users
MIDDLEWARE += [
"weblate.legal.middleware.RequireTOSMiddleware",
]
Insert terms confirmation after two-factor authentication and before team synchronization so that logins awaiting terms acceptance do not change team memberships.
Spustite migráciu databázy na voliteľnú inštaláciu dodatočných databázových štruktúr pre modul:
weblate migrate
Poskytnite šablóny právnych dokumentov zodpovedajúce vašej službe, ako je popísané v Prispôsobenie právnych dokumentov a štýlov.
Rada
V nasadeniach Docker povoľte právny modul pomocou WEBLATE_LEGAL_INTEGRATION namiesto úpravy settings.py. Použite tos-confirm na povolenie právneho modulu a vynútenia potvrdenia právnych dokumentov, alebo wllegal na dodatočné načítanie hosťovaných šablón právnych dokumentov používaných službami prevádzkovanými spoločnosťou Weblate s.r.o. Tieto šablóny nie sú určené na všeobecné použitie. Ak chcete v Dockeri poskytnúť vlastné šablóny, umiestnite ich do /app/data/python/customize/templates/legal/documents, pozrite Nahrádzanie loga a iných statických súborov.
Po zmene premenných prostredia znovu vytvorte Docker kontajner, napríklad pomocou docker compose up -d. Reštartovanie existujúceho kontajnera neaplikuje zmenené hodnoty prostredia.
Použitie¶
Po inštalácii a prispôsobení sa právne dokumenty zobrazia v používateľskom rozhraní Weblate.
Šablóny právnych dokumentov sú bežné Django šablóny. Text sa prekladá iba vtedy, keď použijete prekladové tagy Django, ako sú {% translate %} alebo {% blocktranslate %}; obyčajný HTML text sa zobrazuje tak, ako je napísaný.
Právne stránky a prehľad prihlásenia a registrácie poskytujú premenné terms_url a privacy_url na odkazovanie na dokumenty podmienok poskytovania služby a zásad ochrany osobných údajov.
Prispôsobenie právnych dokumentov a štýlov¶
Poskytnite vlastné právne dokumenty prepísaním týchto šablón v Vytvorenie modulu Python:
templates/legal/documents/tos.htmltemplates/legal/documents/privacy.htmltemplates/legal/documents/summary.htmltemplates/legal/documents/contracts.htmltemplates/legal/styles.htmlstatic/weblate_customization/legal.css
Umiestnite aplikáciu prispôsobenia pred weblate.legal a akúkoľvek inú aplikáciu poskytujúcu prepisy právnych šablón v INSTALLED_APPS, aby Django vybralo jej šablóny. Prepíšu sa iba šablóny, ktoré poskytnete; zvyšné právne šablóny naďalej používajú predvolené hodnoty z neskorších aplikácií.
Šablóna legal/styles.html je zahrnutá v hlavičke HTML každej právnej stránky. Použite ju na načítanie štýlu z vašej aplikácie prispôsobenia:
{% load static %}
<link rel="stylesheet" href="{% static 'weblate_customization/legal.css' %}" />
Po pridaní alebo zmene statického súboru spustite weblate collectstatic --noinput.
V nasadeniach Docker umiestnite šablóny dokumentov do /app/data/python/customize/templates/legal/documents, styles.html do /app/data/python/customize/templates/legal/styles.html a štýl do /app/data/python/customize/static/legal.css. Šablóna štýlu potom používa {% static 'legal.css' %}. Reštartujte kontajner, aby sa zmeny uplatnili, pozrite Nahrádzanie loga a iných statických súborov.
Predvolene obaly právnych dokumentov používajú CSS triedu tos. Weblate k tejto triede nepriraďuje žiadne štýlovanie; cielte na ňu z vášho vlastného štýlu alebo nastavte LEGAL_DOCUMENT_CSS_CLASS na inú triedu zodpovedajúcu značovaniu vášho dokumentu. Nastavte nastavenie na prázdny reťazec, ak nie je potrebná žiadna obalová trieda.
Použite LEGAL_HIDDEN_DOCUMENTS na skrytie voliteľných právnych stránok, ako sú subdodávatelia, z právneho menu. Skryté stránky vrátia odpoveď 404, keď sú priamo vyžiadané. Ak sú terms alebo privacy skryté, odkazy používajúce terms_url alebo privacy_url sa vrátia k LEGAL_URL alebo PRIVACY_URL, keď sú nakonfigurované, inak sa odkaz vynechá.
Ak chcete použiť externe hosťované právne dokumenty s právnym potvrdením, nakonfigurujte LEGAL_HIDDEN_DOCUMENTS na skrytie terms a privacy a nastavte LEGAL_URL a PRIVACY_URL. Potvrdzovacia stránka potom odkazuje na tieto externé dokumenty a vyžaduje jednu dohodu pokrývajúcu obe bez potreby prepísať šablónu legal/documents/tos.html. Ak nie je dostupný odkaz na zásady ochrany osobných údajov, potvrdenie pokrýva iba podmienky poskytovania služby.
Avatary¶
Avatary sa sťahujú a ukladajú do vyrovnávacej pamäte na strane servera, aby sa znížili úniky informácií na stránky, ktoré ich predvolene obsluhujú. Vstavanú podporu na získavanie avatarov z e-mailových adries, ktoré sú pre to nakonfigurované, je možné vypnúť pomocou ENABLE_AVATARS.
Weblate momentálne podporuje:
CDN pre lokalizáciu¶
Doplnky CDN pre lokalizáciu JavaScriptu a Prekladové súbory CDN zapisujú súbory do LOCALIZE_CDN_PATH; Weblate ich neposkytuje. Nakonfigurujte webový server alebo CDN poskytujúce LOCALIZE_CDN_URL ako verejný hostiteľ statických súborov iba na čítanie.
Považujte každý publikovaný súbor CDN za verejný. UUID špecifické pre doplnok v URL nie je mechanizmus riadenia prístupu. Nepovoľujte doplnky CDN pre komponenty, ktoré obsahujú súkromné reťazce, nevydaný text produktu, údaje o zákazníkoch, interné URL, príklady API, cesty repozitára, komentáre prekladateľov alebo metadáta formátu súboru, ktoré by nemali byť vystavené.
Doplnok Prekladové súbory CDN publikuje surové prekladové súbory vo formátoch podporovaných Weblate. Niektoré formáty môžu byť interpretované prehliadačmi alebo inými klientmi ako HTML, SVG, XML, JavaScript, YAML alebo konfigurácia špecifická pre aplikáciu. Poskytujte CDN z vyhradenej domény, ktorá je oddelená od Weblate a od aplikácie spotrebúvajúcej preklady. Nezdieľajte autentifikačné cookies s doménou CDN.
Odporúčaná konfigurácia servera:
Poskytujte iba adresár nakonfigurovaný pomocou
LOCALIZE_CDN_PATH; nevystavujte repozitáre Weblate, zálohy, médiá, konfiguráciu ani celý dátový adresár.Zakázať výpis adresárov.
Zamietnite prístup k
.kotlin-sdk-staginga všetkému jeho obsahu. Doplnok Kotlin SDK používa tento adresár na dočasnú prípravu, nie na publikovanie. Aplikujte toto obmedzenie pred povolením doplnku, vrátane prípadu, keď CDN kopíruje súbory z pôvodného adresára.Používajte HTTPS a nastavte hostiteľa CDN ako iba na čítanie z webového servera.
Odosielajte X-Content-Type-Options s hodnotou
nosniff.Nakonfigurujte konzervatívne typy MIME. Neznáme formáty prekladov poskytujte ako text/plain alebo application/octet-stream;
weblate.jsposkytujte iba ako JavaScript.Pre surové formáty prekladov, ktoré nie sú určené na vykreslenie v prehliadači, zvážte pridanie Content-Disposition s hodnotou
attachment.Nakonfigurujte
Access-Control-Allow-Originiba pre stránky, ktoré potrebujú prístup prehliadača k súborom.Nastavte životnosť vyrovnávacej pamäte tak, aby zodpovedala vašim očakávaniam aktualizácií, a vyčistite vyrovnávaciu pamäť CDN, keď staré preklady musia rýchlo zmiznúť.
Nasledujúci úryvok nginx poskytuje iba nakonfigurovaný adresár CDN a aplikuje konzervatívne predvolené hodnoty pre surové prekladové súbory:
#
# nginx configuration for the Weblate localization CDN
#
# You will want to change:
#
# - server_name to match the host configured in LOCALIZE_CDN_URL
# - root to match LOCALIZE_CDN_PATH
# - Access-Control-Allow-Origin to the sites that need browser access
# - TLS configuration if HTTPS is not terminated before nginx
#
server {
listen 80;
server_name cdn.example.com;
# LOCALIZE_CDN_PATH
root /home/weblate/data/l10n-cdn;
autoindex off;
disable_symlinks on;
location = / {
return 404;
}
# Kotlin SDK preparation files must never be served.
location ^~ /.kotlin-sdk-staging {
return 404;
}
# The JavaScript localization add-on publishes this loader.
location ~ "^/[0-9a-f]{32}/weblate\.js$" {
try_files $uri =404;
types {
application/javascript js;
}
default_type application/javascript;
add_header X-Content-Type-Options nosniff always;
# add_header Access-Control-Allow-Origin "https://www.example.com" always;
expires 1h;
}
# Content-addressed Android artifacts never change at the same URL.
location ~ "^/[0-9a-f]{32}/artifacts/[0-9a-f]{64}\\.arsc$" {
try_files $uri =404;
types { }
default_type application/octet-stream;
add_header X-Content-Type-Options nosniff always;
add_header Content-Disposition "attachment" always;
add_header Cache-Control "public, max-age=31536000, immutable";
# add_header Access-Control-Allow-Origin "https://www.example.com" always;
}
# Other CDN files are translation files. Serve them conservatively so raw
# formats are not interpreted as active browser content.
# Manifest JSON files also use this one-hour cache policy.
location / {
try_files $uri =404;
types {
}
default_type text/plain;
add_header X-Content-Type-Options nosniff always;
add_header Content-Disposition "attachment" always;
# add_header Access-Control-Allow-Origin "https://www.example.com" always;
expires 1h;
}
}
Podpisovanie zápisov Git pomocou GnuPG¶
Všetky zápisy môžu byť podpísané kľúčom GnuPG inštancie Weblate.
Zapnite
WEBLATE_GPG_IDENTITY. (Weblate vygeneruje kľúč GnuPG, keď bude potrebný, a použije ho na podpisovanie všetkých zápisov prekladov.)Táto funkcia vyžaduje nainštalovaný GnuPG 2.1 alebo novší.
Kľúč nájdete v
DATA_DIRa verejný kľúč je zobrazený na stránke „O nás“:
Prípadne môžete do Weblate importovať aj existujúce kľúče, stačí nastaviť
HOME=$DATA_DIR/homepri vyvolaní gpg.
Rada
Materiál kľúča je Weblate dlhodobo ukladaný do vyrovnávacej pamäte. V prípade, že necháte Weblate vygenerovať kľúč s WEBLATE_GPG_IDENTITY a potom importujete kľúč s tou istou identitou na použitie existujúceho kľúča, odporúča sa vyčistiť vyrovnávaciu pamäť redis, aby ste videli účinok takejto zmeny.
Poznámka
Pri zdieľaní DATA_DIR medzi viacerými hostiteľmi prosím dodržujte pokyny na https://wiki.gnupg.org/NFS, aby podpisovanie GnuPG fungovalo spoľahlivo.
Viď aj
Obmedzovanie rýchlosti¶
Zmenené vo verzii 4.6: Obmedzovanie rýchlosti sa už nevzťahuje na prihlásených super používateľov.
Niekoľko operácií vo Weblate je obmedzených rýchlosťou. Limity rýchlosti sa vyhodnocujú nezávisle pre každý rozsah. Najviac RATELIMIT_ATTEMPTS pokusov je povolených v rámci RATELIMIT_WINDOW sekúnd v jednom rozsahu. Tento rozsah je potom zablokovaný na RATELIMIT_LOCKOUT; Weblate z toho neurobí dočasný zákaz IP pre celú stránku. Prekročenie jedného rozsahu, ako je TRANSLATE alebo SEARCH, samo o sebe neblokuje nesúvisiace rozsahy, ako sú LOGIN alebo SECOND_FACTOR. Existujú aj nastavenia špecifické pre rozsahy, napríklad RATELIMIT_CONTACT_ATTEMPTS alebo RATELIMIT_TRANSLATE_ATTEMPTS. Tabuľka nižšie je úplným zoznamom dostupných rozsahov.
Nasledujúce operácie podliehajú obmedzeniu rýchlosti:
Názov |
Rozsah |
Povolené pokusy |
Okno obmedzenia rýchlosti |
Obdobie zablokovania |
|---|---|---|---|---|
Registrácia |
|
5 |
300 |
600 |
Odosielanie správy administrátorom |
|
2 |
300 |
600 |
Overenie heslom pri prihlásení |
|
5 |
300 |
600 |
Obnovenie hesla |
|
5 |
300 |
600 |
Dvojfaktorová autentifikácia |
|
5 |
300 |
600 |
Vyhľadávanie na celej stránke |
|
6 |
60 |
60 |
Prekladanie |
|
30 |
60 |
600 |
Pridanie do slovníka |
|
30 |
60 |
600 |
Začatie prekladu do nového jazyka |
|
2 |
300 |
600 |
Vytváranie nového projektu |
|
5 |
600 |
600 |
Pripojenie účtu GitHub |
|
100 |
3600 |
600 |
Vykresľovanie náhľadu Markdown |
|
60 |
60 |
60 |
V rámci každého rozsahu je obmedzenie rýchlosti založené na reláciách, keď je používateľ prihlásený, a na IP adrese, ak nie je.
Prísne vynucovanie medzi súbežnými pracovníkmi vyžaduje backend vyrovnávacej pamäte s operáciami atomického inkrementovania a dekrementovania. Štandardná konfigurácia Konfigurovať vyrovnávaciu pamäť používajúca Valkey alebo Redis poskytuje tieto operácie.
Pre prihlásených používateľov Weblate zaznamenáva prvú zamietnutú požiadavku počas každého aktívneho zablokovania rozsahu v Audítorský protokol, vrátane rozsahu a cesty požiadavky. Opakované zamietnutia počas toho istého zablokovania nevytvárajú ďalšie záznamy v audítorskom protokole.
Ak sa používateľovi nepodarí prihlásiť AUTH_LOCK_ATTEMPTS krát, overenie heslom bude na účte vypnuté, kým neprejde procesom resetovania hesla.
Nastavenia je možné aplikovať aj v kontajneri Docker pridaním predpony WEBLATE_ k názvu nastavenia, napríklad RATELIMIT_ATTEMPTS sa stane WEBLATE_RATELIMIT_ATTEMPTS.
API má samostatné nastavenia obmedzovania rýchlosti, pozri Obmedzovanie rýchlosti API.