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:
Source string additional flags:
Informació addicional sobre les cadenes d’origen describes manual editing.
Edició massiva es pot utilitzar per aplicar senyals per lots.
El complement Edició massiva pot aplicar senyals automàticament.
Senyals per cadena extretes del format de fitxer, vegeu Localization file formats.
Senyals de traducció (actualment només el senyalador
només de lecturaper a la cadena d’origen bilingüe o quan l’edició de plantilles monolingües està desactivada).Banderes específiques de format de fitxer.
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-onlyThe string is read-only and should not be edited in Weblate, see Cadenes de només lectura.
terminologyUsed 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:NPrioritat 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-textTracta el text com a document XML, afecta Sintaxi XML i Marcatge XML.
font-family:NAMEDefiniu la família de fonts per a les comprovacions de representació, vegeu Gestió de tipus de lletra.
font-weight:WEIGHTDefiniu el pes de la font per a les comprovacions de representació, vegeu Gestió de tipus de lletra.
font-size:SIZEDefiniu la mida del tipus de lletra per a les comprovacions de representació, vegeu Gestió de tipus de lletra.
font-spacing:SPACINGDefiniu l’espaiat entre lletres per a comprovacions de representació, vegeu Gestió de tipus de lletra.
font-monospaceDisplay the string in the translation editor using a monospace font. Unlike the
font-family/font-size/font-weight/font-spacingflags, 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:FLAGSDefine flags for customizing the behavior of the MessageFormat d’ICU quality check.
icu-tag-prefix:PREFIXSet 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:SOURCEMarqueu aquesta cadena com una variant de cadena amb la font coincident. Vegeu Variants de corda.
regex:REGEXRegular expression to match translation, see Expressió regular.
discard:NAMEDescarta la bandera definida en un nivell superior.
forbiddenIndica la traducció prohibida en un glossari, vegeu Forbidden translations.
strict-sameFeu que Traducció no modificada eviteu utilitzar les excepcions de paraules incorporades.
strict-formatFeu que les comprovacions de format s’apliquin utilitzant format fins i tot per a formes plurals amb un sol valor, vegeu Cordes formatades.
case-insensitiveAjusteu 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ó.
acceleratorSpecify the single punctuation accelerator marker, for example
accelerator:&,accelerator:_, oraccelerator:~. Enables the Accelerator key quality check.asciidoc-textTreat a text as an AsciiDoc document, affects Traducció no modificada. Enables the AsciiDoc markup quality check.
bbcode-textTracta 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-glossaryEnables the No s’ajusta al glossari quality check.
fluent-partsEnables the Parts de Fluent quality check.
fluent-referencesEnables the Referències de Fluent quality check.
fluent-target-inner-htmlEnables the HTML interior de la traducció de Fluent quality check.
fluent-target-syntaxEnables the Sintaxi de la traducció de Fluent quality check.
angularjs-formatEnables the Cadena d’interpolació d’AngularJS quality check.
automattic-components-formatEnables the Formatació de components d’Automattic quality check.
c-formatEnables the Format C quality check.
c-sharp-formatEnables the Format C# quality check.
csharp-formatEnables the Format C# quality check.
es-formatEnables the Literals de la plantilla ECMAScript quality check.
i18next-interpolationEnables the Interpolació d’i18next quality check.
icu-message-formatEnables the MessageFormat d’ICU and Sintaxi MessageFormat d’ICU quality checks.
java-printf-formatEnables the Format Java quality check.
java-formatEnables the MessageFormat de Java quality check.
auto-java-messageformatTracteu 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-formatEnables the Format JavaScript quality check.
laravel-formatEnables the Format Laravel quality check.
lua-formatEnables the Format Lua quality check.
object-pascal-formatEnables the Format d’Object Pascal quality check.
objc-formatEnables the Objective-C format quality check.
percent-placeholdersEnables the Marcadors de substitució de percentatge quality check.
perl-brace-formatEnables the Format de claus del Perl quality check.
perl-formatEnables the Format Perl quality check.
php-formatEnables the Format PHP quality check.
python-brace-formatEnables the Format de claus del Python quality check.
python-formatEnables the Format Python quality check.
qt-formatEnables the Format Qt quality check.
qt-plural-formatEnables the Format de plurals de Qt quality check.
ruby-formatEnables the Format Ruby quality check.
scheme-formatEnables the Format Scheme quality check.
vue-formatEnables the Formatació l18n de Vue quality check.
rst-textTracta un text com un document reStructuredText, afecta Traducció no modificada. Habilita les comprovacions de qualitat reStructuredText inconsistent i Error de sintaxi de reStructuredText.
md-textTracteu 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-lengthEnables the Longitud màxima de la traducció quality check.
max-linesEnables the Maximum number of lines quality check.
max-sizeEnables the Mida màxima de la traducció quality check.
placeholdersEnables the Marcadors de substitució quality check.
regexEnables the Expressió regular quality check.
safe-mdxEnables the Safe MDX quality check.
safe-htmlEnables the HTML insegur quality check.
auto-safe-htmlTracteu 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.
urlThe string should consist of only a URL. Enables the URL quality check.
fluent-source-inner-htmlEnables the HTML interior de l’origen Fluent quality check.
fluent-source-syntaxEnables the Sintaxi de l’origen de Fluent quality check.
ignore-all-checksIgnore all quality checks.
ignore-acceleratorSkip the Accelerator key quality check.
ignore-ai-accuracySkip the AI: Accuracy quality check.
ignore-ai-fluencySkip the AI: Fluency quality check.
ignore-ai-formattingSkip the AI: Formatting quality check.
ignore-ai-styleSkip the AI: Style quality check.
ignore-ai-terminologySkip the AI: Terminology quality check.
ignore-asciidoc-markupSkip the AsciiDoc markup quality check.
ignore-bbcodeSkip the Sintaxi de BBCode quality check.
ignore-xml-chars-around-tagsSkip the Caràcters al voltant de les etiquetes XML quality check.
ignore-duplicateSkip the Paraules duplicades consecutives quality check.
ignore-check-glossarySkip the No s’ajusta al glossari quality check.
ignore-double-spaceSkip the Espai doble quality check.
ignore-fluent-partsSkip the Parts de Fluent quality check.
ignore-fluent-referencesSkip the Referències de Fluent quality check.
ignore-fluent-target-inner-htmlSkip the HTML interior de la traducció de Fluent quality check.
ignore-fluent-target-syntaxSkip the Sintaxi de la traducció de Fluent quality check.
ignore-angularjs-formatSkip the Cadena d’interpolació d’AngularJS quality check.
ignore-automattic-components-formatSkip the Formatació de components d’Automattic quality check.
ignore-c-formatSkip the Format C quality check.
ignore-c-sharp-formatSkip the Format C# quality check.
ignore-es-formatSkip the Literals de la plantilla ECMAScript quality check.
ignore-i18next-interpolationSkip the Interpolació d’i18next quality check.
ignore-icu-message-formatSkip the MessageFormat d’ICU quality check.
ignore-java-printf-formatSkip the Format Java quality check.
ignore-java-formatSkip the MessageFormat de Java quality check.
ignore-javascript-formatSkip the Format JavaScript quality check.
ignore-laravel-formatSkip the Format Laravel quality check.
ignore-lua-formatSkip the Format Lua quality check.
ignore-object-pascal-formatSkip the Format d’Object Pascal quality check.
ignore-objc-formatSkip the Objective-C format quality check.
ignore-percent-placeholdersSkip the Marcadors de substitució de percentatge quality check.
ignore-perl-brace-formatSkip the Format de claus del Perl quality check.
ignore-perl-formatSkip the Format Perl quality check.
ignore-php-formatSkip the Format PHP quality check.
ignore-python-brace-formatSkip the Format de claus del Python quality check.
ignore-python-formatSkip the Format Python quality check.
ignore-qt-formatSkip the Format Qt quality check.
ignore-qt-plural-formatSkip the Format de plurals de Qt quality check.
ignore-ruby-formatSkip the Format Ruby quality check.
ignore-scheme-formatSkip the Format Scheme quality check.
ignore-vue-formatSkip the Formatació l18n de Vue quality check.
ignore-translatedSkip the S’ha traduït quality check.
ignore-inconsistentSkip the Inconsistent quality check.
ignore-rst-referencesSkip the reStructuredText inconsistent quality check.
ignore-kashidaSkip the S’ha utilitzat kashida quality check.
ignore-md-linkSkip the Enllaços Markdown quality check.
ignore-md-reflinkSkip the Referències de Markdown quality check.
ignore-md-syntaxSkip the Sintaxi Markdown quality check.
ignore-max-lengthSkip the Longitud màxima de la traducció quality check.
ignore-max-linesSkip the Maximum number of lines quality check.
ignore-max-sizeSkip the Mida màxima de la traducció quality check.
ignore-escaped-newlineSkip the Mismatched \n quality check.
ignore-end-colonSkip the Dos punts no coincidents quality check.
ignore-end-ellipsisSkip the Punts suspensius no coincidents quality check.
ignore-end-exclamationSkip the Signe d’exclamació no coincident quality check.
ignore-end-stopSkip the Punt no coincident quality check.
ignore-end-interrobangSkip the Interrobang no coincident quality check.
ignore-end-questionSkip the Signe d’interrogació no coincident quality check.
ignore-end-semicolonSkip the Punt i coma no coincident quality check.
ignore-newline-countSkip the Salts de línia no coincidents quality check.
ignore-pluralsSkip the Manquen plurals quality check.
ignore-multiple-capitalSkip the Multiple capitals quality check.
ignore-kabyle-charactersSkip the Caràcters no estàndard en cabilenc quality check.
ignore-placeholdersSkip the Marcadors de substitució quality check.
ignore-prohibited-initial-characterSkip the Caràcter inicial prohibit quality check.
ignore-punctuation-spacingSkip the Espaiat de la puntuació quality check.
ignore-regexSkip the Expressió regular quality check.
ignore-rst-syntaxSkip the Error de sintaxi de reStructuredText quality check.
ignore-reusedSkip the Traducció reutilitzada quality check.
ignore-safe-mdxSkip the Safe MDX quality check.
ignore-same-pluralsSkip the Plurals idèntics quality check.
ignore-begin-newlineSkip the Salt de línia inicial quality check.
ignore-begin-spaceSkip the Espais inicials quality check.
ignore-end-newlineSkip the Salt de línia final quality check.
ignore-end-spaceSkip the Espai al final quality check.
ignore-sameSkip the Traducció no modificada quality check.
ignore-safe-htmlSkip the HTML insegur quality check.
ignore-urlSkip the URL quality check.
ignore-xml-tagsSkip the Marcatge XML quality check.
ignore-xml-invalidSkip the Sintaxi XML quality check.
ignore-zero-width-spaceSkip the Espai d’amplada zero quality check.
ignore-ellipsisSkip the Punts suspensius quality check.
ignore-fluent-source-inner-htmlSkip the HTML interior de l’origen Fluent quality check.
ignore-fluent-source-syntaxSkip the Sintaxi de l’origen de Fluent quality check.
ignore-icu-message-formatSkip the Sintaxi MessageFormat d’ICU quality check.
ignore-long-untranslatedSkip the No traduïda de fa molt de temps quality check.
ignore-multiple-failuresSkip the Diverses comprovacions fallides quality check.
ignore-unnamed-formatSkip the Múltiples variables sense nom quality check.
ignore-source-max-lengthSkip the Longitud de la cadena d’origen quality check.
ignore-optional-pluralSkip 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,.markdowno.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:
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ó:
La família de tipus de lletra i l’estil es reconeixen automàticament després de penjar-los:
Podeu carregar diversos tipus de lletra a Weblate:
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:5Defines maximal width in pixels and, optionally, the maximum number of lines. Word wrapping is applied when more than one line is configured.
font-family:ubuntuDefineix el grup de fonts que s’utilitzarà especificant el seu identificador.
font-size:22Defineix 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.
Subclasse weblate.checks.Check
Estableix uns quants atributs.
Implementeu el mètode
check(si voleu tractar amb els plurals al vostre codi) o el mètodecheck_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