Verificări și reparații¶
Reparații automate personalizate¶
Puteți, de asemenea, să vă implementați propriile corecturi automate în plus față de cele standard și să le includeți în AUTOFIX_LIST
.
Corecțiile automate sunt puternice, dar pot provoca, de asemenea, daune; aveți grijă când scrieți una.
De exemplu, următoarea corecție automată ar înlocui fiecare apariție a șirului foo
într-o traducere cu bar
:
#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
from django.utils.translation import gettext_lazy as _
from weblate.trans.autofixes.base import AutoFix
class ReplaceFooWithBar(AutoFix):
"""Replace foo with bar."""
name = _("Foobar")
def fix_single_target(self, target, source, unit):
if "foo" in target:
return target.replace("foo", "bar"), True
return target, False
Pentru a instala verificări personalizate, furnizați o cale complet calificată către clasa Python în AUTOFIX_LIST
, a se vedea Custom quality checks, addons and auto-fixes.
Personalizarea comportamentului cu ajutorul stegulețelor¶
Puteți ajusta cu precizie comportamentul Weblate (în principal verificările) pentru fiecare șir sursă (în revizuirea șirurilor sursă, a se vedea Additional info on source strings) sau în Component configuration (Steaguri de traducere). Unele formate de fișiere permit, de asemenea, specificarea stegulețelor direct în format (a se vedea Supported file formats).
Stegulețele sunt separate prin virgulă, iar parametrii sunt separați prin două puncte. Puteți utiliza ghilimele pentru a include spații albe sau caractere speciale în șir. De exemplu:
placeholders:"special:value":"other value", regex:.*
Iată o listă a marcajelor acceptate în prezent:
rst-text
Tratează un text ca un document reStructuredText, afectează Traducere neschimbată.
md-text
Tratează textul ca pe un document Markdown.
dos-eol
Folosește markeri de sfârșit de linie DOS în loc de cei Unix (
\r\n
instead of\n
).url
Șirul trebuie să fie format doar dintr-un URL.
safe-html
Șirul trebuie să fie sigur din punct de vedere HTML, a se vedea HTML nesigur.
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.
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 String variants.
regex:REGEX
Regular expression to match translation, see Expresie regulată.
forbidden
Indică o traducere interzisă într-un glosar, a se vedea Forbidden translations.
python-format
,c-format
,object-pascal-format
,php-format
,python-brace-format
,javascript-format
,c-sharp-format
,java-format
,java-messageformat
,lua-format
,auto-java-messageformat
,qt-format
,qt-plural-format
,ruby-format
,scheme-format
,vue-format
Treats all strings like format strings, affects Format Python, Format C, Object Pascal format, Formatul PHP, Formatul Qt, Formatul plural Qt, Formatul Ruby, Formatare Vue I18n, Formatul de bretea Python, Format JavaScript, C# format, format Java, Mesaj în format Java, Formatul Lua, Formatul schemei, Traducere neschimbată.
strict-same
Faceți ca „Traducerea neschimbată” să evite utilizarea listei negre a cuvintelor încorporate, a se vedea Traducere neschimbată.
check-glossary
Enable the „Does not follow glossary” quality check.
ignore-bbcode
Treceți peste verificarea calității „BBcode markup”.
ignore-duplicate
Treceți peste verificarea calității „Cuvinte consecutive duplicate”.
ignore-check-glossary
Skip the „Does not follow glossary” quality check.
ignore-double-space
Treceți peste verificarea calității „Spațiu dublu”.
ignore-angularjs-format
Treceți peste verificarea calității „Șir de interpolare AngularJS”.
ignore-c-format
Treceți peste verificarea calității „formatului C”.
ignore-c-sharp-format
Treceți peste verificarea calității „format C#”.
ignore-es-format
Skip the „ECMAScript template literals” quality check.
ignore-i18next-interpolation
Treceți peste verificarea calității „interpolării i18next”.
ignore-java-format
Treceți peste verificarea calității „formatului Java”.
ignore-java-messageformat
Treceți peste verificarea calității „Java MessageFormat”.
ignore-javascript-format
Treceți peste verificarea calității „Format JavaScript”.
ignore-lua-format
Skip the „Lua format” quality check.
ignore-object-pascal-format
Skip the „Object Pascal format” quality check.
ignore-percent-placeholders
Treceți peste controlul de calitate „Procentul de locuri”.
ignore-perl-format
Treceți peste verificarea calității „formatului Perl”.
ignore-php-format
Treceți peste verificarea calității „formatului PHP”.
ignore-python-brace-format
Treceți peste verificarea calității „Python brace format”.
ignore-python-format
Treceți peste verificarea calității „formatului Python”.
ignore-qt-format
Treceți peste verificarea calității „format Qt”.
ignore-qt-plural-format
Treceți peste verificarea calității „Qt plural format”.
ignore-ruby-format
Treceți peste verificarea calității „formatului Ruby”.
ignore-vue-format
Skip the „Vue I18n formatting” quality check.
ignore-translated
Treceți peste verificarea calității „A fost tradus”.
ignore-inconsistent
Treceți peste verificarea calității „Inconsistent”.
ignore-kashida
Treceți peste verificarea calității „Scrisoarea Kashida utilizată”.
ignore-md-link
Treceți peste verificarea calității „Markdown links”.
ignore-md-reflink
Treceți peste verificarea calității „Referințe Markdown”.
ignore-md-syntax
Treceți peste verificarea calității „Markdown syntax”.
ignore-max-length
Treceți peste verificarea calității „Lungimea maximă a traducerii”.
ignore-max-size
Treceți peste verificarea calității „Dimensiunea maximă a traducerii”.
ignore-escaped-newline
Treceți peste verificarea calității „Mismatched n”.
ignore-end-colon
Skip the „Mismatched colon” quality check.
ignore-end-ellipsis
Skip the „Mismatched ellipsis” quality check.
ignore-end-exclamation
Skip the „Mismatched exclamation mark” quality check.
ignore-end-stop
Skip the „Mismatched full stop” quality check.
ignore-end-question
Skip the „Mismatched question mark” quality check.
ignore-end-semicolon
Skip the „Mismatched semicolon” quality check.
ignore-newline-count
Treceți peste verificarea calității „Mismatching line breaks”.
ignore-plurals
Treceți peste verificarea calității „Lipsește pluralul”.
ignore-placeholders
Treceți peste verificarea calității „Placeholders”.
ignore-punctuation-spacing
Treceți peste verificarea calității „Spațierea punctuației”.
ignore-regex
Treceți peste verificarea calității „Expresie regulată”.
ignore-same-plurals
Treceți peste verificarea calității „Același plural”.
ignore-begin-newline
Treceți peste verificarea calității „Starting newline”.
ignore-begin-space
Treceți peste verificarea calității „Spații de pornire”.
ignore-end-newline
Treceți peste verificarea calității „Trailing newline”.
ignore-end-space
Treceți peste verificarea calității „Spațiu de urmărire”.
ignore-same
Treceți peste verificarea calității „Traducere neschimbată”.
ignore-safe-html
Treceți peste verificarea calității „Unsafe HTML”.
ignore-url
Treceți peste verificarea calității „URL”.
ignore-xml-tags
Treceți peste verificarea calității „XML markup”.
ignore-xml-invalid
Treceți peste verificarea calității „Sintaxa XML”.
ignore-zero-width-space
Treceți peste verificarea calității „Spațiu cu lățime zero”.
ignore-ellipsis
Treceți peste verificarea calității „Ellipsis”.
ignore-long-untranslated
Treceți peste verificarea calității „Long untranslated”.
ignore-multiple-failures
Treceți peste controlul de calitate „Controale multiple eșuate”.
ignore-unnamed-format
Treceți peste verificarea calității „Multiple unnamed variables”.
ignore-optional-plural
Treceți peste verificarea calității „Unpluralised”.
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 Component configuration, 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 Component configuration. Fiecare verificare din listă nu poate fi ignorată în interfața cu utilizatorul, iar orice șir care nu trece de această verificare este marcat ca Needs editing (a se vedea Translation states).
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 din 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, 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:
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:
Familia de caractere și stilul sunt recunoscute automat după încărcarea lor:
Puteți avea mai multe fonturi încărcate în Weblate:
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 lățimea maximă.
font-family:ubuntu
Definește grupul de fonturi care urmează să fie utilizat prin specificarea identificatorului acestuia.
font-size:22
Define dimensiunea fontului.
Întocmirea propriilor cecuri¶
Există o gamă largă de verificări ale calității încorporate (a se vedea Quality checks), 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.
Subclasa weblate.checks.Check
Setați câteva atribute.
Implementați fie
check
(dacă doriți să vă ocupați de plural în codul dumneavoastră), fie metodacheck_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 Custom quality checks, addons and auto-fixes.
Verificarea faptului că textul traducerii nu conține „foo”¶
Aceasta este o verificare destul de simplă, care verifică doar dacă în traducere lipsește șirul „foo”.
#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
"""Simple quality check example."""
from django.utils.translation import gettext_lazy as _
from weblate.checks.base import TargetCheck
class FooCheck(TargetCheck):
# Used as identifier for check, should be unique
# Has to be shorter than 50 characters
check_id = "foo"
# Short name used to display failing check
name = _("Foo check")
# Description for failing check
description = _("Your translation is foo")
# Real check code
def check_single(self, source, target, unit):
return "foo" in target
Verificarea faptului că pluralul din textul traducerii în limba cehă diferă¶
Verificați cu ajutorul informațiilor lingvistice pentru a verifica dacă cele două forme de plural în limba cehă nu sunt identice.
#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
"""Quality check example for Czech plurals."""
from django.utils.translation import gettext_lazy as _
from weblate.checks.base import TargetCheck
class PluralCzechCheck(TargetCheck):
# Used as identifier for check, should be unique
# Has to be shorter than 50 characters
check_id = "foo"
# Short name used to display failing check
name = _("Foo check")
# Description for failing check
description = _("Your translation is foo")
# Real check code
def check_target_unit(self, sources, targets, unit):
if self.is_language(unit, ("cs",)):
return targets[1] == targets[2]
return False
def check_single(self, source, target, unit):
"""We don't check target strings here."""
return False