Verificări și reparații

Reparații automate personalizate

Puteți, de asemenea, să vă implementați propriile corecturi automate în plus față de cele standard și să le includeți în AUTOFIX_LIST.

Corecțiile automate sunt puternice, dar pot provoca, de asemenea, daune; aveți grijă când scrieți una.

De exemplu, următoarea corecție automată ar înlocui fiecare apariție a șirului foo într-o traducere cu bar:

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#

from django.utils.translation import gettext_lazy as _

from weblate.trans.autofixes.base import AutoFix


class ReplaceFooWithBar(AutoFix):
    """Replace foo with bar."""

    name = _("Foobar")

    def fix_single_target(self, target, source, unit):
        if "foo" in target:
            return target.replace("foo", "bar"), True
        return target, False

Pentru a instala verificări personalizate, furnizați o cale complet calificată către clasa Python în AUTOFIX_LIST, a se vedea Verificări de calitate personalizate, addon-uri și auto-corectări.

Personalizarea comportamentului cu ajutorul stegulețelor

Puteți ajusta cu precizie comportamentul Weblate (în principal verificările) pentru fiecare șir sursă (în revizuirea șirurilor sursă, a se vedea Informații suplimentare despre șirurile sursă) sau în Configurația componentei (Steaguri de traducere). Unele formate de fișiere permit, de asemenea, specificarea stegulețelor direct în format (a se vedea Formate de fișiere acceptate).

Stegulețele sunt separate prin virgulă, iar parametrii sunt separați prin două puncte. Puteți utiliza ghilimele pentru a include spații albe sau caractere speciale în șir. De exemplu:

placeholders:"special:value":"other value", regex:.*

Iată o listă a marcajelor acceptate în prezent:

rst-text

Tratează un text ca un document reStructuredText, afectează Traducere neschimbată.

dos-eol

Folosește markeri de sfârșit de linie DOS în loc de cei Unix (\r\n instead of \n).

read-only

Șirul este doar pentru citire și nu trebuie editat în Weblate, a se vedea Read-only strings.

priority:N

Prioritatea șirului. Șirurile cu prioritate mai mare sunt prezentate mai întâi pentru traducere. Prioritatea implicită este 100. Cu cât un șir are o prioritate mai mare, cu atât este oferit mai devreme pentru traducere.

max-length:N

Limitează lungimea maximă a unui șir de caractere la N caractere, a se vedea Lungimea maximă a traducerii.

xml-text

Tratează textul ca document XML, afectează Sintaxa XML și Marcarea XML.

font-family:NAME

Definește font-family pentru verificările de redare, a se vedea Gestionarea fonturilor.

font-weight:WEIGHT

Definiți font-weight pentru verificările de redare, a se vedea Gestionarea fonturilor.

font-size:SIZE

Definiți dimensiunea fontului pentru verificările de redare, a se vedea Gestionarea fonturilor.

font-spacing:SPACING`

Definiți spațierea literelor pentru verificările de redare, a se vedea Gestionarea fonturilor.

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.

java-format

Activați verificarea calității format Java.

java-messageformat

Activați verificarea calității Mesaj în format Java.

javascript-format

Activați verificarea calității Format JavaScript.

lua-format

Activați verificarea calității Formatul Lua.

object-pascal-format

Activați verificarea calității check-object-pascal-pascal-format.

percent-placeholders

Activați verificarea calității Procentaje de marcaj.

perl-format

Activați verificarea calității Formatul Perl.

php-format

Activați verificarea calității Formatul Perl.

python-brace-format

Activați verificarea calității Formatul de bretea Python.

python-format

Activați verificarea calității Format Python.

qt-format

Activați verificarea calității Formatul Qt.

qt-plural-format

Activați verificarea calității Formatul Qt.

ruby-format

Activați verificarea calității Formatul Ruby.

scheme-format

Activați verificarea calității Formatul schemei.

vue-format

Activați verificarea calității Formatare Vue I18n.

md-text

Tratează textul ca pe un document Markdown. Activați verificările de calitate Legături Markdown, Referințe Markdown și Sintaxa Markdown.

safe-html

Activați verificarea calității HTML nesigur.

url

Șirul trebuie să fie format doar dintr-un URL. Activați verificarea calității URL.

ignore-bbcode

Săriți peste verificarea calității Marcaj BBcode.

ignore-duplicate

Săriți peste verificarea calității Cuvinte consecutive duplicate.

ignore-check-glossary

Săriți peste verificarea calității check-check-check-glossary.

ignore-double-space

Săriți peste verificarea calității Spațiu dublu.

ignore-angularjs-format

Treceți peste verificarea calității Șir de interpolare AngularJS.

ignore-c-format

Săriți peste verificarea calității Format C.

ignore-c-sharp-format

Săriți peste verificarea calității C# format.

ignore-es-format

Săriți peste verificarea calității Șabloane literale ECMAScript.

ignore-i18next-interpolation

Treceți peste verificarea calității Interpolare i18next.

ignore-java-format

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

ignore-java-messageformat

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

ignore-javascript-format

Treceți peste verificarea calității Format JavaScript.

ignore-lua-format

Săriți peste verificarea calității Formatul Lua.

ignore-object-pascal-format

Săriți peste verificarea calității Formatul Object Pascal.

ignore-percent-placeholders

Săriți peste verificarea calității Procentaje de marcaj.

ignore-perl-format

Săriți peste verificarea calității Formatul Perl.

ignore-php-format

Săriți peste verificarea calității Formatul PHP.

ignore-python-brace-format

Săriți peste verificarea calității Formatul de bretea Python.

ignore-python-format

Săriți peste verificarea calității Format Python.

ignore-qt-format

Săriți peste verificarea calității Formatul Qt.

ignore-qt-plural-format

Săriți peste verificarea calității Formatul plural Qt.

ignore-ruby-format

Săriți peste verificarea calității Formatul Ruby.

ignore-scheme-format

Săriți peste verificarea calității Formatul schemei.

ignore-vue-format

Săriți peste verificarea calității Formatare Vue I18n.

ignore-translated

Săriți peste verificarea calității A fost tradus.

ignore-inconsistent

Săriți peste verificarea calității Inconsecvent.

ignore-kashida

Săriți peste verificarea calității Scrisoarea Kashida folosită.

ignore-md-link

Săriți peste verificarea calității Legături Markdown.

ignore-md-reflink

Săriți peste verificarea calității Referințe Markdown.

ignore-md-syntax

Săriți peste verificarea calității Sintaxa Markdown.

ignore-max-length

Săriți peste verificarea calității Lungimea maximă a traducerii.

ignore-max-size

Săriți peste verificarea calității Dimensiunea maximă a traducerii.

ignore-escaped-newline

Treceți peste verificarea calității Nepotrivit \n.

ignore-end-colon

Săriți peste verificarea calității Două puncte nepotrivite.

ignore-end-ellipsis

Săriți peste verificarea calității Elipsa nepotrivită.

ignore-end-exclamation

Săriți peste verificarea calității Semnul exclamării nepotrivit.

ignore-end-stop

Săriți peste verificarea calității Punct final nepotrivit.

ignore-end-question

Săriți peste verificarea calității Semn de întrebare nepotrivit.

ignore-end-semicolon

Săriți peste verificarea calității Punct și virgulă nepotrivit.

ignore-newline-count

Săriți peste verificarea calității Întreruperi de linie nepotrivite.

ignore-plurals

Săriți peste verificarea calității Lipsește pluralul.

ignore-placeholders

Săriți peste verificarea calității Semne de poziție.

ignore-punctuation-spacing

Săriți peste verificarea calității Spațierea punctuației.

ignore-regex

Săriți peste verificarea calității Expresie regulată.

ignore-same-plurals

Săriți peste verificarea calității Același plural.

ignore-begin-newline

Săriți peste verificarea calității Începutul liniei noi.

ignore-begin-space

Săriți peste verificarea calității Spații de pornire.

ignore-end-newline

Săriți peste verificarea calității Linie nouă de urmărire.

ignore-end-space

Săriți peste verificarea calității Spațiu de urmărire.

ignore-same

Săriți peste verificarea calității Traducere neschimbată.

ignore-safe-html

Săriți peste verificarea calității HTML nesigur.

ignore-url

Săriți peste verificarea calității URL.

ignore-xml-tags

Săriți peste verificarea calității Marcarea XML.

ignore-xml-invalid

Săriți peste verificarea calității Sintaxa XML.

ignore-zero-width-space

Săriți peste verificarea calității Spațiu cu lățime zero.

ignore-ellipsis

Săriți peste verificarea calității Elipsă.

ignore-long-untranslated

Treceți peste verificarea calității Lungă netradusă.

ignore-multiple-failures

Săriți peste verificarea calității Controale multiple eșuate.

ignore-unnamed-format

Treceți peste verificarea calității Variabile multiple fără nume.

ignore-optional-plural

Săriți peste verificarea calității Nepluralizat.

Notă

În general, regula se numește ignore-* pentru orice verificare, folosind identificatorul acesteia, astfel încât puteți folosi acest lucru chiar și pentru verificările dumneavoastră personalizate.

Aceste indicatori sunt înțeleși atât în setările Configurația componentei, cât și în setările pentru șirul sursă și în fișierul de traducere în sine (de exemplu, în GNU gettext).

Executarea controalelor

Nou în versiunea 3.11.

Puteți configura o listă de verificări care nu pot fi ignorate prin setarea Controale forțate în Configurația componentei. Fiecare verificare din listă nu poate fi ignorată în interfața cu utilizatorul, iar orice șir care nu trece de această verificare este marcat ca Needs editing (a se vedea Statele de traducere).

Gestionarea fonturilor

Nou în versiunea 3.7.

Sugestie

Fonturile încărcate în Weblate sunt folosite doar în scopul verificării Dimensiunea maximă a traducerii, ele nu au niciun efect în interfața cu utilizatorul Weblate.

Verificarea Dimensiunea maximă a traducerii utilizată pentru a calcula dimensiunile textului redat are nevoie ca fontul să fie încărcat în Weblate și selectat cu ajutorul unui indicator de traducere (see Personalizarea comportamentului cu ajutorul stegulețelor).

Instrumentul de gestionare a fonturilor Weblate de la : Fonts din meniul Manage al proiectului de traducere oferă o interfață pentru încărcarea și gestionarea fonturilor. Se pot încărca fonturi TrueType sau OpenType, se pot configura grupuri de fonturi și se pot utiliza cele din verificare.

Grupurile de fonturi vă permit să definiți fonturi diferite pentru diferite limbi, ceea ce este de obicei necesar pentru limbile nelatine:

../_images/font-group-edit.png

Grupurile de fonturi sunt identificate printr-un nume, care nu poate conține spații albe sau caractere speciale, astfel încât să poată fi utilizat cu ușurință în definiția verificării:

../_images/font-group-list.png

Familia de caractere și stilul sunt recunoscute automat după încărcarea lor:

../_images/font-edit.png

Puteți avea mai multe fonturi încărcate în Weblate:

../_images/font-list.png

Pentru a utiliza fonturile pentru verificarea lungimii șirului de caractere, treceți-i indicatoarele corespunzătoare (a se vedea Personalizarea comportamentului cu ajutorul stegulețelor). Probabil că veți avea nevoie de următoarele:

max-size:500

Defines maximal width in pixels.

font-family:ubuntu

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

font-size:22

Defines font size in pixels.

Întocmirea propriilor cecuri

Există o gamă largă de verificări ale calității încorporate (a se vedea Controale de calitate), deși s-ar putea să nu acopere tot ceea ce doriți să verificați. Lista de verificări efectuate poate fi ajustată folosind CHECK_LIST și puteți adăuga și verificări personalizate.

  1. Subclasa weblate.checks.Check

  2. Setați câteva atribute.

  3. Implementați fie check (dacă doriți să vă ocupați de plural în codul dumneavoastră), fie metoda check_single (care o face pentru dumneavoastră).

Câteva exemple:

Pentru a instala verificări personalizate, furnizați o cale complet calificată către clasa Python în CHECK_LIST, a se vedea Verificări de calitate personalizate, addon-uri și auto-corectări.

Verificarea faptului că textul traducerii nu conține „foo”

Aceasta este o verificare destul de simplă, care verifică doar dacă în traducere lipsește șirul „foo”.

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
"""Simple quality check example."""

from django.utils.translation import gettext_lazy as _

from weblate.checks.base import TargetCheck


class FooCheck(TargetCheck):

    # Used as identifier for check, should be unique
    # Has to be shorter than 50 characters
    check_id = "foo"

    # Short name used to display failing check
    name = _("Foo check")

    # Description for failing check
    description = _("Your translation is foo")

    # Real check code
    def check_single(self, source, target, unit):
        return "foo" in target

Verificarea faptului că pluralul din textul traducerii în limba cehă diferă

Verificați cu ajutorul informațiilor lingvistice pentru a verifica dacă cele două forme de plural în limba cehă nu sunt identice.

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
"""Quality check example for Czech plurals."""

from django.utils.translation import gettext_lazy as _

from weblate.checks.base import TargetCheck


class PluralCzechCheck(TargetCheck):

    # Used as identifier for check, should be unique
    # Has to be shorter than 50 characters
    check_id = "foo"

    # Short name used to display failing check
    name = _("Foo check")

    # Description for failing check
    description = _("Your translation is foo")

    # Real check code
    def check_target_unit(self, sources, targets, unit):
        if self.is_language(unit, ("cs",)):
            return targets[1] == targets[2]
        return False

    def check_single(self, source, target, unit):
        """We don't check target strings here."""
        return False