Comprovacions i correccions

Correccions automàtiques personalitzades

També podeu implementar la vostra pròpia reparació automàtica a més de les estàndards i incloure-les a AUTOFIX_LIST.

Les solucions automàtiques són potents, però també poden causar danys; aneu amb compte a l’hora d’escriure’n un.

Per exemple, la següent correcció automàtica substituiria cada ocurrència de la cadena foo en una traducció amb bar:

from __future__ import annotations

from typing import TYPE_CHECKING

from weblate.trans.autofixes.base import AutoFix

if TYPE_CHECKING:
    from weblate.trans.models import Unit


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

    # Might be localized using gettext_lazy
    name = "Foobar"

    def fix_single_target(
        self, target: str, source: str, unit: Unit
    ) -> tuple[str, bool]:
        if "foo" in target:
            return target.replace("foo", "bar"), True
        return target, False

Per instal·lar comprovacions personalitzades, proporcioneu un camí completament qualificat a la classe Python a AUTOFIX_LIST, vegeu Custom quality checks, add-ons, automatic suggestions and auto-fixes.

Personalització del comportament mitjançant banderes

Podeu afinar el comportament de Weblate utilitzant banderes. Les banderes proporcionen comentaris visuals als traductors i els ajuden a millorar la seva traducció. Les banderes es combinen a partir de les fonts següents:

Les banderes estan separades per comes; si tenen paràmetres, es separen amb dos punts. Podeu utilitzar cometes per incloure espais en blanc o caràcters especials a la cadena. Per exemple:

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

S’accepten cometes simples i dobles, els caràcters especials s’escaparan mitjançant la barra invertida:

placeholders:"quoted \"string\"":'single \'quoted\''
placeholders:r"^#*"

Per verificar que els traductors no canvien l’encapçalament d’un document Markdown. S’activarà una comprovació fallida si la cadena ### Index es tradueix com a # Índex.

placeholders:r"\]\([^h].*?\)"

Per garantir que els enllaços interns no es tradueixin (és a dir, [test](../checks) no es converteixi en [test](../chequeos).

The flags defined on a higher level can be discarded using the discard:NAME syntax. For example, if a component is configured to safe-html, you can add discard:safe-html to the string flags to skip it for this particular string. Translation flags cannot discard an explicit read-only flag set on the source string.

Aquí teniu una llista de banderes acceptades actualment:

read-only

The string is read-only and should not be edited in Weblate, see Cadenes de només lectura.

terminology

Used in Glossari. Copies the string into all glossary languages so it can be used consistently in all translations. Also useful in combination with read-only, for example in product names.

priority:N

Prioritat de la cadena. Les cadenes de prioritat més alta es presenten primer per a la traducció. La prioritat per defecte és 100, com més alta tingui una cadena, més aviat s’ofereix per a la traducció.

xml-text

Tracta el text com a document XML, afecta Sintaxi XML i Marcatge XML.

font-family:NAME

Definiu la família de fonts per a les comprovacions de representació, vegeu Gestió de tipus de lletra.

font-weight:WEIGHT

Definiu el pes de la font per a les comprovacions de representació, vegeu Gestió de tipus de lletra.

font-size:SIZE

Definiu la mida del tipus de lletra per a les comprovacions de representació, vegeu Gestió de tipus de lletra.

font-spacing:SPACING

Definiu l’espaiat entre lletres per a comprovacions de representació, vegeu Gestió de tipus de lletra.

font-monospace

Display the string in the translation editor using a monospace font. Unlike the font-family/font-size/font-weight/font-spacing flags, this does not affect rendering checks and never loads an uploaded font; it only switches the editor to the browser’s built-in monospace font stack.

icu-flags:FLAGS

Define flags for customizing the behavior of the MessageFormat d’ICU quality check.

icu-tag-prefix:PREFIX

Set a required prefix for XML tags for the MessageFormat d’ICU quality check.

placeholders:NAME:NAME2:...

S’esperen cadenes de marcador de posició a la traducció, vegeu Marcadors de substitució.

replacements:FROM:TO:FROM2:TO2...

Reemplaçaments a realitzar en comprovar els paràmetres de text resultants (per exemple a Mida màxima de la traducció o Longitud màxima de la traducció). El cas d’ús típic d’això és ampliar els elements ubicables per assegurar-se que el text s’ajusta fins i tot amb valors llargs, per exemple: replacements:%s:"John Doe".

variants:SOURCE

Marqueu aquesta cadena com una variant de cadena amb la font coincident. Vegeu Variants de corda.

regex:REGEX

Regular expression to match translation, see Expressió regular.

discard:NAME

Descarta la bandera definida en un nivell superior.

forbidden

Indica la traducció prohibida en un glossari, vegeu Forbidden translations.

strict-same

Feu que Traducció no modificada eviteu utilitzar les excepcions de paraules incorporades.

strict-format

Feu que les comprovacions de format s’apliquin utilitzant format fins i tot per a formes plurals amb un sol valor, vegeu Cordes formatades.

case-insensitive

Ajusteu el comportament de les comprovacions perquè no distingeixi entre majúscules i minúscules. Actualment només afecta la comprovació de qualitat de Marcadors de substitució.

accelerator

Specify the single punctuation accelerator marker, for example accelerator:&, accelerator:_, or accelerator:~. Enables the Accelerator key quality check.

asciidoc-text

Treat a text as an AsciiDoc document, affects Traducció no modificada. Enables the AsciiDoc markup quality check.

bbcode-text

Tracta un text com un document de codi de tauler d’anuncis (BBCode), afecta Traducció no modificada. Habilita la comprovació de qualitat Sintaxi de BBCode.

check-glossary

Enables the No s’ajusta al glossari quality check.

fluent-parts

Enables the Parts de Fluent quality check.

fluent-references

Enables the Referències de Fluent quality check.

fluent-target-inner-html

Enables the HTML interior de la traducció de Fluent quality check.

fluent-target-syntax

Enables the Sintaxi de la traducció de Fluent quality check.

angularjs-format

Enables the Cadena d’interpolació d’AngularJS quality check.

automattic-components-format

Enables the Formatació de components d’Automattic quality check.

c-format

Enables the Format C quality check.

c-sharp-format

Enables the Format C# quality check.

csharp-format

Enables the Format C# quality check.

es-format

Enables the Literals de la plantilla ECMAScript quality check.

i18next-interpolation

Enables the Interpolació d’i18next quality check.

icu-message-format

Enables the MessageFormat d’ICU and Sintaxi MessageFormat d’ICU quality checks.

java-printf-format

Enables the Format Java quality check.

java-format

Enables the MessageFormat de Java quality check.

auto-java-messageformat

Tracteu un text com a Java MessageFormat condicional, habilitant MessageFormat de Java només quan la font conté marcadors de posició Java MessageFormat. Habilita la comprovació de qualitat MessageFormat de Java.

javascript-format

Enables the Format JavaScript quality check.

laravel-format

Enables the Format Laravel quality check.

lua-format

Enables the Format Lua quality check.

object-pascal-format

Enables the Format d’Object Pascal quality check.

objc-format

Enables the Objective-C format quality check.

percent-placeholders

Enables the Marcadors de substitució de percentatge quality check.

perl-brace-format

Enables the Format de claus del Perl quality check.

perl-format

Enables the Format Perl quality check.

php-format

Enables the Format PHP quality check.

python-brace-format

Enables the Format de claus del Python quality check.

python-format

Enables the Format Python quality check.

qt-format

Enables the Format Qt quality check.

qt-plural-format

Enables the Format de plurals de Qt quality check.

ruby-format

Enables the Format Ruby quality check.

scheme-format

Enables the Format Scheme quality check.

vue-format

Enables the Formatació l18n de Vue quality check.

rst-text

Tracta un text com un document reStructuredText, afecta Traducció no modificada. Habilita les comprovacions de qualitat reStructuredText inconsistent i Error de sintaxi de reStructuredText.

md-text

Tracteu un text com un document de Markdown i proporcioneu un ressaltat de sintaxi de Markdown a l’àrea de text de traducció. Habilita les comprovacions de qualitat Enllaços Markdown, Referències de Markdown i Sintaxi Markdown.

max-length

Enables the Longitud màxima de la traducció quality check.

max-lines

Enables the Maximum number of lines quality check.

max-size

Enables the Mida màxima de la traducció quality check.

placeholders

Enables the Marcadors de substitució quality check.

regex

Enables the Expressió regular quality check.

safe-mdx

Enables the Safe MDX quality check.

safe-html

Enables the HTML insegur quality check.

auto-safe-html

Tracteu un text com a HTML condicional, activant HTML insegur només per a text sense format o cadenes d’origen que continguin un marcatge HTML estàndard o elements personalitzats vàlids. Això és útil per a variants de Markdown esteses, com ara MDX, on la sintaxi entre claudàtors no és HTML. Habilita la comprovació de qualitat HTML insegur.

url

The string should consist of only a URL. Enables the URL quality check.

fluent-source-inner-html

Enables the HTML interior de l’origen Fluent quality check.

fluent-source-syntax

Enables the Sintaxi de l’origen de Fluent quality check.

ignore-all-checks

Ignore all quality checks.

ignore-accelerator

Skip the Accelerator key quality check.

ignore-ai-accuracy

Skip the AI: Accuracy quality check.

ignore-ai-fluency

Skip the AI: Fluency quality check.

ignore-ai-formatting

Skip the AI: Formatting quality check.

ignore-ai-style

Skip the AI: Style quality check.

ignore-ai-terminology

Skip the AI: Terminology quality check.

ignore-asciidoc-markup

Skip the AsciiDoc markup quality check.

ignore-bbcode

Skip the Sintaxi de BBCode quality check.

ignore-xml-chars-around-tags

Skip the Caràcters al voltant de les etiquetes XML quality check.

ignore-duplicate

Skip the Paraules duplicades consecutives quality check.

ignore-check-glossary

Skip the No s’ajusta al glossari quality check.

ignore-double-space

Skip the Espai doble quality check.

ignore-fluent-parts

Skip the Parts de Fluent quality check.

ignore-fluent-references

Skip the Referències de Fluent quality check.

ignore-fluent-target-inner-html

Skip the HTML interior de la traducció de Fluent quality check.

ignore-fluent-target-syntax

Skip the Sintaxi de la traducció de Fluent quality check.

ignore-angularjs-format

Skip the Cadena d’interpolació d’AngularJS quality check.

ignore-automattic-components-format

Skip the Formatació de components d’Automattic quality check.

ignore-c-format

Skip the Format C quality check.

ignore-c-sharp-format

Skip the Format C# quality check.

ignore-es-format

Skip the Literals de la plantilla ECMAScript quality check.

ignore-i18next-interpolation

Skip the Interpolació d’i18next quality check.

ignore-icu-message-format

Skip the MessageFormat d’ICU quality check.

ignore-java-printf-format

Skip the Format Java quality check.

ignore-java-format

Skip the MessageFormat de Java quality check.

ignore-javascript-format

Skip the Format JavaScript quality check.

ignore-laravel-format

Skip the Format Laravel quality check.

ignore-lua-format

Skip the Format Lua quality check.

ignore-object-pascal-format

Skip the Format d’Object Pascal quality check.

ignore-objc-format

Skip the Objective-C format quality check.

ignore-percent-placeholders

Skip the Marcadors de substitució de percentatge quality check.

ignore-perl-brace-format

Skip the Format de claus del Perl quality check.

ignore-perl-format

Skip the Format Perl quality check.

ignore-php-format

Skip the Format PHP quality check.

ignore-python-brace-format

Skip the Format de claus del Python quality check.

ignore-python-format

Skip the Format Python quality check.

ignore-qt-format

Skip the Format Qt quality check.

ignore-qt-plural-format

Skip the Format de plurals de Qt quality check.

ignore-ruby-format

Skip the Format Ruby quality check.

ignore-scheme-format

Skip the Format Scheme quality check.

ignore-vue-format

Skip the Formatació l18n de Vue quality check.

ignore-translated

Skip the S’ha traduït quality check.

ignore-inconsistent

Skip the Inconsistent quality check.

ignore-rst-references

Skip the reStructuredText inconsistent quality check.

ignore-kashida

Skip the S’ha utilitzat kashida quality check.

ignore-md-link

Skip the Enllaços Markdown quality check.

ignore-md-reflink

Skip the Referències de Markdown quality check.

ignore-md-syntax

Skip the Sintaxi Markdown quality check.

ignore-max-length

Skip the Longitud màxima de la traducció quality check.

ignore-max-lines

Skip the Maximum number of lines quality check.

ignore-max-size

Skip the Mida màxima de la traducció quality check.

ignore-escaped-newline

Skip the Mismatched \n quality check.

ignore-end-colon

Skip the Dos punts no coincidents quality check.

ignore-end-ellipsis

Skip the Punts suspensius no coincidents quality check.

ignore-end-exclamation

Skip the Signe d’exclamació no coincident quality check.

ignore-end-stop

Skip the Punt no coincident quality check.

ignore-end-interrobang

Skip the Interrobang no coincident quality check.

ignore-end-question

Skip the Signe d’interrogació no coincident quality check.

ignore-end-semicolon

Skip the Punt i coma no coincident quality check.

ignore-newline-count

Skip the Salts de línia no coincidents quality check.

ignore-plurals

Skip the Manquen plurals quality check.

ignore-multiple-capital

Skip the Multiple capitals quality check.

ignore-kabyle-characters

Skip the Caràcters no estàndard en cabilenc quality check.

ignore-placeholders

Skip the Marcadors de substitució quality check.

ignore-prohibited-initial-character

Skip the Caràcter inicial prohibit quality check.

ignore-punctuation-spacing

Skip the Espaiat de la puntuació quality check.

ignore-regex

Skip the Expressió regular quality check.

ignore-rst-syntax

Skip the Error de sintaxi de reStructuredText quality check.

ignore-reused

Skip the Traducció reutilitzada quality check.

ignore-safe-mdx

Skip the Safe MDX quality check.

ignore-same-plurals

Skip the Plurals idèntics quality check.

ignore-begin-newline

Skip the Salt de línia inicial quality check.

ignore-begin-space

Skip the Espais inicials quality check.

ignore-end-newline

Skip the Salt de línia final quality check.

ignore-end-space

Skip the Espai al final quality check.

ignore-same

Skip the Traducció no modificada quality check.

ignore-safe-html

Skip the HTML insegur quality check.

ignore-url

Skip the URL quality check.

ignore-xml-tags

Skip the Marcatge XML quality check.

ignore-xml-invalid

Skip the Sintaxi XML quality check.

ignore-zero-width-space

Skip the Espai d’amplada zero quality check.

ignore-ellipsis

Skip the Punts suspensius quality check.

ignore-fluent-source-inner-html

Skip the HTML interior de l’origen Fluent quality check.

ignore-fluent-source-syntax

Skip the Sintaxi de l’origen de Fluent quality check.

ignore-icu-message-format

Skip the Sintaxi MessageFormat d’ICU quality check.

ignore-long-untranslated

Skip the No traduïda de fa molt de temps quality check.

ignore-multiple-failures

Skip the Diverses comprovacions fallides quality check.

ignore-unnamed-format

Skip the Múltiples variables sense nom quality check.

ignore-source-max-length

Skip the Longitud de la cadena d’origen quality check.

ignore-optional-plural

Skip the No pluralitzada quality check.

Nota

Generalment, la regla s’anomena ignore-* per a qualsevol comprovació, utilitzant el seu identificador, de manera que podeu utilitzar-la fins i tot per a les vostres comprovacions personalitzades.

Aquests senyaladors s’entenen tant en la configuració de Configuració dels components, per la configuració de la cadena d’origen i en el propi fitxer de traducció (per exemple, a GNU gettext).

Location-based flags

Algunes marques s’afegeixen a les cadenes de manera predeterminada, en funció de les seves ubicacions. Això vol dir que determinades comprovacions s’habilitaran automàticament en funció d’on s’utilitzi la cadena.

  • rst-text: aquesta marca s’afegeix automàticament a les cadenes dels fitxers reStructuredText, si l’extensió d’ubicació és .rst.

  • md-text: aquesta marca s’afegeix automàticament a les cadenes dels fitxers Markdown i MDX, si l’extensió d’ubicació és .md, .markdown o .mdx.

Execució de controls

Les comprovacions aplicades no es poden descartar i marcar la cadena com a Necessita edició (vegeu Estats de traducció). Això evita que els traductors ocultin aquestes comprovacions.

Suggeriment

Turning on check enforcing doesn’t enable it automatically. Some checks have to be turned on by adding the corresponding flag to the string or component flags.

Això s’utilitza millor amb comprovacions que poden causar problemes greus quan s’utilitzen com ara comprovacions per a Cordes formatades. No es recomana utilitzar per a comprovacions d’estil com Traducció no modificada perquè de vegades l’acomiadament és un enfocament raonable en aquestes.

Aleshores, el Filtre de qualitat de les traduccions es pot utilitzar per excloure que les cadenes que necessiten editar-se es comprometin amb el control de versions.

Gestió de tipus de lletra

Suggeriment

Els tipus de lletra penjats a Weblate s’utilitzen únicament per a la comprovació Mida màxima de la traducció, no tenen cap efecte a la interfície d’usuari de Weblate.

La comprovació Mida màxima de la traducció que s’utilitza per calcular les dimensions del text representat ha de carregar el tipus de lletra a Weblate i seleccionar-lo mitjançant un senyalador de traducció (vegeu Personalització del comportament mitjançant banderes).

L’eina de gestió de fonts del Weblate a Fonts al menú Operacions del vostre projecte de traducció ofereix una interfície per carregar i gestionar tipus de lletra. Els tipus de lletra TrueType o OpenType es poden carregar, configurar grups de fonts i utilitzar-los a la comprovació.

Els grups de fonts us permeten definir diferents tipus de lletra per a diferents idiomes, que normalment es necessita per a idiomes no llatins:

../_images/font-group-edit.webp

Els grups de fonts s’identifiquen pel nom, que no pot contenir espais en blanc ni caràcters especials, de manera que es pot utilitzar fàcilment en la definició de comprovació:

../_images/font-group-list.webp

La família de tipus de lletra i l’estil es reconeixen automàticament després de penjar-los:

../_images/font-edit.webp

Podeu carregar diversos tipus de lletra a Weblate:

../_images/font-list.webp

Per utilitzar els tipus de lletra per comprovar la longitud de la cadena, passeu-li els senyaladors adequats (vegeu Personalització del comportament mitjançant banderes). Probablement necessitareu els següents:

mida màxima: 500 / mida màxima: 300:5

Defines maximal width in pixels and, optionally, the maximum number of lines. Word wrapping is applied when more than one line is configured.

font-family:ubuntu

Defineix el grup de fonts que s’utilitzarà especificant el seu identificador.

font-size:22

Defineix la mida de la lletra en píxels.

Redacció de xecs propis

Hi ha una àmplia gamma de controls de qualitat incorporats (vegeu Controls de qualitat), encara que potser no cobreixen tot el que voleu comprovar. La llista de comprovacions realitzades es pot ajustar mitjançant CHECK_LIST, i també podeu afegir comprovacions personalitzades.

  1. Subclasse weblate.checks.Check

  2. Estableix uns quants atributs.

  3. Implementeu el mètode check (si voleu tractar amb els plurals al vostre codi) o el mètode check_single (que ho fa per vosaltres).

Alguns exemples:

Per instal·lar comprovacions personalitzades, proporcioneu un camí completament qualificat a la classe Python a CHECK_LIST, vegeu Custom quality checks, add-ons, automatic suggestions and auto-fixes.

Checks declaring propagates = "source" or propagates = "target" update related strings in the background after a save. They can override evaluate_propagated(units) to evaluate a matching group in bulk. Yield a (unit, failed) pair for every string, including passing strings so stale warnings can be removed. Without this override, Weblate evaluates the check on each matching string in chunks.

Comprovant el text de la traducció no conté «foo»

Aquesta és una comprovació bastant senzilla que només comprova si a la traducció li falta la cadena «foo».

"""Simple quality check example."""

from __future__ import annotations

from typing import TYPE_CHECKING

from django.utils.translation import gettext_lazy

from weblate.checks.base import TargetCheck

if TYPE_CHECKING:
    from weblate.trans.models import Unit


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
    # Might be localized using gettext_lazy
    name = "Foo check"

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

    # Real check code
    def check_single(self, source: str, target: str, unit: Unit) -> bool:
        return "foo" in target

Comprovar que els plurals del text de traducció txec són diferents

Comproveu l’ús de la informació de l’idioma per verificar que les dues formes de plural en llengua txeca no són iguals.

"""Quality check example for Czech plurals."""

from __future__ import annotations

from django.utils.translation import gettext_lazy

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
    # Might be localized using gettext_lazy
    name = "Foo check"

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

    # Real check code
    def check_target_unit(self, sources, targets, unit) -> bool:
        if unit.translation.language.is_base({"cs"}):
            return targets[1] == targets[2]
        return False

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