Comprobaciones y correcciones

Correcciones automáticas personalizadas

También puede implementar sus propias correcciones automáticas además de las estándar e incluirlas en AUTOFIX_LIST.

Las correcciones automáticas son potentes pero pueden causar daños; tenga cuidado al escribir una.

Por ejemplo, la siguiente corrección automática reemplazaría cada aparición de la cadena foo en una traducción por bar:

from weblate.trans.autofixes.base import AutoFix


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

    # Might be localized using gettext_lazy
    name = "Foobar"

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

Para instalar comprobaciones personalizadas, proporcione una ruta completa a la clase de Python en el parámetro AUTOFIX_LIST, véase Controles de calidad personalizados, sugerencias automáticas y auto-correcciones.

Personalizar el comportamiento mediante indicadores

Puedes ajustar el comportamiento de Weblate utilizando banderas. Las banderas proporcionan información visual a los traductores y les ayudan a mejorar su traducción. Las banderas se fusionan a partir de las siguientes fuentes:

Los indicadores se separan con comas; si tienen parámetros, se separan con dos puntos. Puedes utilizar comillas para incluir espacios en blanco o caracteres especiales en la cadena. Por ejemplo:

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

Se aceptan tanto las comillas simples como las dobles, los caracteres especiales se escapan utilizando la barra invertida:

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

Para comprobar que los traductores no cambian el encabezamiento de un documento Markdown. Se activará una comprobación fallida si la cadena ### Index se traduce como # Indice.

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

Para garantizar que los enlaces internos no se traduzcan (es decir, que [test](../checks) no se convierta en [test](../chequeos).

Los indicadores definidos en un nivel más alto puede ser descartado utilizando la sintaxis discard:NAME. Por ejemplo, si un componente está configurado para safe-html, puede añadir discard:safe-html para los indicadores de cadena para omitirlo para esta cadena particular.

Aquí hay una lista de banderas actualmente aceptadas:

read-only

La cadena es de solo lectura y no debe editarse en Weblate; consulte Cadenas de solo lectura.

terminology

Se utiliza en Glosario. Copia la cadena en todos los idiomas del glosario para que pueda utilizarse de forma coherente en todas las traducciones. También es útil en combinación con read-only, por ejemplo en nombres de productos.

priority:N

Prioridad de la cadena. Las cadenas de mayor prioridad se presentan primero para su traducción. La prioridad por defecto es 100, cuanto mayor sea la prioridad de una cadena, antes se ofrecerá para su traducción.

max-length:N

Limita la longitud máxima de una cadena a N caracteres, véase Longitud máxima de traducción.

xml-text

Tratar el texto como un documento XML, afecta a Sintaxis XML y Marcación XML.

font-family:NAME

Definir la familia de fuentes para las comprobaciones de interpretación, consulte Gestionar tipos de letra.

font-weight:WEIGHT

Definir la ponderación de fuente para comprobantes de representación, consulte Gestionar tipos de letra.

font-size:SIZE

Definir el tamaño de la fuente para las comprobaciones de representación, consulte Gestionar tipos de letra.

font-spacing:SPACING

Definir el espaciado de letras para las comprobaciones de representación, consulte Gestionar tipos de letra.

icu-flags:FLAGS

Define los indicadores para personalizar el comportamiento del control de calidad MessageFormat de ICU.

icu-tag-prefix:PREFIX

Establezca un prefijo requerido para las etiquetas XML para el control de calidad MessageFormat de ICU.

placeholders:NAME:NAME2:...

Cadenas sustitutivas esperadas en la traducción; consulte Sustitutivos.

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

Reemplazos a realizar cuando se comprueban los parámetros de texto resultantes (por ejemplo en Tamaño máximo de la traducción o Longitud máxima de traducción). El caso de uso típico para esto es expandir los placeables para asegurar que el texto encaje incluso con valores largos, por ejemplo: replacements:%s: "John Doe".

variants:SOURCE

Marcar esta cadena como una variante de cadena con origen coincidente. Ver Variantes de cadenas.

regex:REGEX

Expresión regular utilizada para relacionar traducciones; consulte Expresión regular.

discard:NAME

Descarta indicador definido sobre un nivel más alto.

forbidden

Indica una traducción prohibida en un glosario, ver Traducciones prohibidas.

strict-same

Crea el Traducción no modificada evita utilizar las palabras de excepciones empotradas.

strict-format

Hacer que las comprobaciones de formato obliguen a usar el formato incluso para formas plurales con un único valor, véase Cadenas formateadas.

case-insensitive

Ajustar el comportamiento de las comprobaciones para que no distingan capitalinas. Actualmente sólo afecta a la comprobación de calidad de Sustitutivos.

bbcode-text

Tratar un texto como un documento Bulletin Board Code (BBCode), afecta a Traducción no modificada. Habilita el comprobante de calidad Marcación BBCode.

check-glossary

Activar el control de calidad No se ajusta al glosario.

fluent-parts

Habilita el comprobante de calidad Partes fluidas.

fluent-references

Habilita el comprobante de calidad Referencias fluidas.

fluent-target-inner-html

Activa el control de calidad Traducción interna fluida de HTML.

fluent-target-syntax

Activar el control de calidad Fluent sintaxis de traducción.

angularjs-format

Activar el control de calidad Cadena de interpolación de AngularJS.

automattic-components-format

Activa la comprobación de calidad Formateo de componentes automáticos.

c-format

Activa el control de calidad Formato C.

c-sharp-format

Activa el control de calidad Formato C#.

csharp-format

Activa el control de calidad Formato C#.

es-format

Activa el control de calidad Literales de plantilla ECMAScript.

i18next-interpolation

Activa el control de calidad Interpolación con i18next.

icu-message-format

Activa los controles de calidad MessageFormat de ICU y Sintaxis MessageFormat de ICU.

java-printf-format

Activa el control de calidad Formato Java.

java-format

Activa el control de calidad MessageFormat de Java.

auto-java-messageformat

Trata un texto como un formato de mensaje Java condicional, habilitando MessageFormat de Java solo cuando el código fuente contiene marcadores de posición de formato de mensaje Java. Habilita la comprobación de calidad MessageFormat de Java.

javascript-format

Activa el control de calidad Formato JavaScript.

laravel-format

Activa el control de calidad Formato Laravel.

lua-format

Activa el control de calidad Formato Lua.

object-pascal-format

Activa el control de calidad Formato de Object Pascal.

objc-format

Activa el control de calidad Formato de Objetive-C.

percent-placeholders

Activa el control de calidad Sustitutivos con signo de porcentaje.

perl-brace-format

Activa el control de calidad Formato de llaves Perl.

perl-format

Activa el control de calidad Formato Perl.

php-format

Activa el control de calidad Formato PHP.

python-brace-format

Activa el control de calidad Formato de llaves de Python.

python-format

Activa el control de calidad Formato Python.

qt-format

Activa el control de calidad Formato Qt.

qt-plural-format

Activa el control de calidad Formato de plurales de Qt.

ruby-format

Activa el control de calidad Formato Ruby.

scheme-format

Activa el control de calidad Formato Scheme.

vue-format

Activa el control de calidad Formato de Vue I18n.

rst-text

Tratar un texto como un documento reStructuredText, afecta a Traducción no modificada. Habilita los controles de calidad en Error de sintaxis reStructuredText y reStructuredText inconsistente.

md-text

Trata un texto como un documento Markdown, y proporciona resaltado de sintaxis Markdown en el área de texto de la traducción. Activa las comprobaciones de calidad Enlaces de Markdown, Referencias de Markdown y Sintaxis de Markdown.

max-length

Habilita la comprobación de calidad en Longitud máxima de traducción.

max-size

Habilita la comprobación de calidad en Tamaño máximo de la traducción.

placeholders

Habilita el control de calidad en Sustitutivos.

regex

Habilita la comprobación de calidad en Expresión regular.

safe-html

Habilita el control de calidad en HTML inseguro.

auto-safe-html

Trata un texto como HTML condicional, habilitando HTML inseguro solo para texto plano o cadenas de origen que contengan marcado HTML estándar o elementos personalizados válidos. Esto es útil para variantes extendidas de Markdown como MDX, donde la sintaxis de corchetes angulares puede no ser HTML. Habilita la comprobación de calidad HTML inseguro.

url

La cadena consistiría solo un URL. Habilita el control de calidad URL.

fluent-source-inner-html

Habilita el control de calidad en HTML interno de una fuente fluida.

fluent-source-syntax

Habilita el control de calidad en Sintaxis de la fuente Fluent.

ignore-all-checks

Ignora todos los controles de calidad.

ignore-bbcode

Pasa por alto la comprobación de calidad Marcación BBCode.

ignore-xml-chars-around-tags

Pasa por alto la comprobación de calidad en Caracteres alrededor de etiquetas XML.

ignore-duplicate

Pasa por alto la comprobación de calidad Palabras consecutivas duplicadas.

ignore-check-glossary

Pasa por alto la comprobación de calidad No se ajusta al glosario.

ignore-double-space

Pasa por alto la comprobación de calidad Espacio duplicado.

ignore-fluent-parts

Pasa por alto la comprobación de calidad Partes fluidas.

ignore-fluent-references

Pasa por alto la comprobación de calidad Referencias fluidas.

ignore-fluent-target-inner-html

Pasa por alto la comprobación de calidad Traducción interna fluida de HTML.

ignore-fluent-target-syntax

Pasa por alto la comprobación de calidad Fluent sintaxis de traducción.

ignore-angularjs-format

Pasa por alto la comprobación de calidad Cadena de interpolación de AngularJS.

ignore-automattic-components-format

Pasa por alto la comprobación de calidad Formateo de componentes automáticos.

ignore-c-format

Pasa por alto la comprobación de calidad Formato C.

ignore-c-sharp-format

Pasa por alto la comprobación de calidad Formato C#.

ignore-es-format

Pasa por alto la comprobación de calidad Literales de plantilla ECMAScript.

ignore-i18next-interpolation

Pasa por alto la comprobación de calidad Interpolación con i18next.

ignore-icu-message-format

Pasa por alto la comprobación de calidad MessageFormat de ICU.

ignore-java-printf-format

Pasa por alto la comprobación de calidad Formato Java.

ignore-java-format

Pasa por alto la comprobación de calidad MessageFormat de Java.

ignore-javascript-format

Pasa por alto la comprobación de calidad Formato JavaScript.

ignore-laravel-format

Pasa por alto la comprobación de calidad en Formato Laravel.

ignore-lua-format

Pasa por alto la comprobación de calidad Formato Lua.

ignore-object-pascal-format

Pasa por alto la comprobación de calidad Formato de Object Pascal.

ignore-objc-format

Pasa por alto la comprobación de calidad Formato de Objetive-C.

ignore-percent-placeholders

Pasa por alto la comprobación de calidad Sustitutivos con signo de porcentaje.

ignore-perl-brace-format

Pasa por alto la comprobación de calidad Formato de llaves Perl.

ignore-perl-format

Pasa por alto la comprobación de calidad Formato Perl.

ignore-php-format

Pasa por alto la comprobación de calidad Formato PHP.

ignore-python-brace-format

Pasa por alto la comprobación de calidad Formato de llaves de Python.

ignore-python-format

Pasa por alto la comprobación de calidad Formato Python.

ignore-qt-format

Pasa por alto la comprobación de calidad Formato Qt.

ignore-qt-plural-format

Pasa por alto la comprobación de calidad Formato de plurales de Qt.

ignore-ruby-format

Pasa por alto la comprobación de calidad Formato Ruby.

ignore-scheme-format

Pasa por alto la comprobación de calidad Formato Scheme.

ignore-vue-format

Pasa por alto la comprobación de calidad Formato de Vue I18n.

ignore-translated

Pasa por alto la comprobación de calidad Ha sido traducido.

ignore-inconsistent

Pasa por alto la comprobación de calidad Incoherente.

ignore-rst-references

Pasa por alto la comprobación de calidad reStructuredText inconsistente.

ignore-kashida

Pasa por alto la comprobación de calidad Kashida utilizado.

ignore-md-link

Pasa por alto la comprobación de calidad Enlaces de Markdown.

ignore-md-reflink

Pasa por alto la comprobación de calidad Referencias de Markdown.

ignore-md-syntax

Pasa por alto la comprobación de calidad Sintaxis de Markdown.

ignore-max-length

Pasa por alto la comprobación de calidad Longitud máxima de traducción.

ignore-max-size

Pasa por alto la comprobación de calidad Tamaño máximo de la traducción.

ignore-escaped-newline

Pasa por alto la comprobación de calidad \n desiguales.

ignore-end-colon

Pasa por alto la comprobación de calidad Dos puntos desiguales.

ignore-end-ellipsis

Pasa por alto la comprobación de calidad Puntos suspensivos desiguales.

ignore-end-exclamation

Pasa por alto la comprobación de calidad Signo de exclamación desigual.

ignore-end-stop

Pasa por alto la comprobación de calidad Punto final desigual.

ignore-end-interrobang

Pasa por alto la comprobación de calidad Interrobang mal ajustado.

ignore-end-question

Pasa por alto la comprobación de calidad Signo de interrogación desigual.

ignore-end-semicolon

Pasa por alto la comprobación de calidad Punto y coma desigual.

ignore-newline-count

Pasa por alto la comprobación de calidad Saltos de renglón desiguales.

ignore-plurals

Pasa por alto la comprobación de calidad Faltan plurales.

ignore-multiple-capital

Pasa por alto la comprobación de calidad en Múltiples capitalinas.

ignore-kabyle-characters

Pasa por alto la comprobación de calidad Caracteres no estándar en Kabyle.

ignore-placeholders

Pasa por alto la comprobación de calidad Sustitutivos.

ignore-prohibited-initial-character

Pasa por alto la comprobación de calidad Carácter inicial prohibido.

ignore-punctuation-spacing

Pasa por alto la comprobación de calidad Espaciado de puntuación.

ignore-regex

Pasa por alto la comprobación de calidad Expresión regular.

ignore-rst-syntax

Pasa por alto la comprobación de calidad Error de sintaxis reStructuredText.

ignore-reused

Pasa por alto la comprobación de calidad Traducciones reutilizadas.

ignore-same-plurals

Pasa por alto la comprobación de calidad Mismos plurales.

ignore-begin-newline

Pasa por alto la comprobación de calidad Salto de renglón al inicio.

ignore-begin-space

Pasa por alto la comprobación de calidad Espacios iniciales.

ignore-end-newline

Pasa por alto la comprobación de calidad Salto de renglón al final.

ignore-end-space

Pasa por alto la comprobación de calidad Espacio al final.

ignore-same

Pasa por alto la comprobación de calidad Traducción no modificada.

ignore-safe-html

Pasa por alto la comprobación de calidad HTML inseguro.

ignore-url

Pasa por alto la comprobación de calidad URL.

ignore-xml-tags

Pasa por alto la comprobación de calidad Marcación XML.

ignore-xml-invalid

Pasa por alto la comprobación de calidad Sintaxis XML.

ignore-zero-width-space

Pasa por alto la comprobación de calidad Espacio de anchura cero.

ignore-ellipsis

Pasa por alto la comprobación de calidad Puntos suspensivos.

ignore-fluent-source-inner-html

Pasa por alto la comprobación de calidad HTML interno de una fuente fluida.

ignore-fluent-source-syntax

Pasa por alto la comprobación de calidad Sintaxis de la fuente Fluent.

ignore-icu-message-format

Pasa por alto la comprobación de calidad Sintaxis MessageFormat de ICU.

ignore-long-untranslated

Pasa por alto la comprobación de calidad Larga no traducida.

ignore-multiple-failures

Pasa por alto la comprobación de calidad Varias comprobaciones fallidas.

ignore-unnamed-format

Pasa por alto la comprobación de calidad Varias variables sin nombre.

ignore-optional-plural

Pasa por alto la comprobación de calidad No pluralizada.

Nota

Generalmente la regla se denomina ignore-* para cualquier comprobación, usa su identificador, así puedes utilizarlo incluso para tus comprobaciones personalizadas.

Estas flags se entienden tanto en la configuración de Configuración de componentes, por la configuración de la cadena de origen y en el propio archivo de traducción (por ejemplo en GNU gettext).

Indicadores basados en el lugar

Algunos indicadores se agregan a las cadenas de forma predeterminada, según sus lugares. Esto significa que ciertas comprobaciones se habilitarán automáticamente dependiendo de donde se use la cadena.

  • rst-text: Este indicador se agrega automáticamente a las cadenas en los archivos reStructuredText, si la extensión de lugar es .rst.

  • md-text: This flag is automatically added to strings in Markdown and MDX files, if location extension is .md, .markdown, or .mdx.

Forzar comprobaciones

Las comprobaciones obligatorias no se pueden descartar y marcan la cadena como Needs editing (consulte Estados de traducción). Esto impide que los traductores oculten dichas comprobaciones.

Consejo

La activación de la comprobación no la habilita automáticamente. Algunas comprobaciones pueden activarse añadiendo el indicador correspondiente a los indicadores de cadena o componente.

Esto es mejor utilizado con comprobaciones que pueden causar incidencias serias cuando se utilizaron comprobaciones para Cadenas formateadas. No se recomienda su uso para comprobaciones de estilo como Traducción no modificada, ya que en estos casos descartar la comprobación puede ser una solución razonable.

La Filtro de calidad de traducción se puede utilizar para excluir cadenas que necesitan editando desde ser consolidado para el control de versión.

Gestionar tipos de letra

Consejo

Las fuentes cargadas en Weblate se usan únicamente a efectos de comprobación Tamaño máximo de la traducción, no tienen efecto en la interfaz de usuario de Weblate.

La comprobación Tamaño máximo de la traducción utilizada para calcular las dimensiones del texto representado necesita que la fuente se cargue en Weblate y se seleccione mediante una flag de traducción (ver Personalizar el comportamiento mediante indicadores).

La herramienta de gestión de fuentes de Weblate en Fonts bajo el menú Operations de tu proyecto de traducción proporciona una interfaz para cargar y gestionar las fuentes. Se pueden cargar fuentes TrueType u OpenType, configurar grupos de fuentes y utilizarlas en la comprobación.

Los grupos de fuentes permiten definir diferentes fuentes para distintos idiomas, lo que suele ser necesario para los idiomas no latinos:

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

Los grupos de fuentes se identifican por su nombre, que no puede contener espacios en blanco ni caracteres especiales, para que pueda utilizarse fácilmente en la definición de la comprobación:

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

Font-family and style are automatically recognized after uploading them:

../_images/font-edit.webp

Puedes tener varias fuentes cargadas en Weblate:

../_images/font-list.webp

Para utilizar las fuentes que comprueban la longitud de la cadena, pásale los indicadores adecuados (ver Personalizar el comportamiento mediante indicadores). Posiblemente necesitarás los siguientes:

max-size:500 / max-size:300:5

Define la anchura máxima en píxeles y, opcionalmente, el número máximo de líneas (se aplica el ajuste de palabras).

font-family:ubuntu

Define el grupo de tipografía a utilizar especificando su identificador.

font-size:22

Define el tamaño de la fuente en pixeles.

Escribir los propios controles

Se han incorporado una amplia gama de controles de calidad, (consulte Comprobaciones de calidad), aunque es posible que no cubran todo lo que quieres comprobar. Se puede ajustar la lista de comprobaciones realizadas mediante CHECK_LIST, y también puedes añadir controles personalizados.

  1. Subclase del weblate.checks.Check

  2. Defina algunos atributos.

  3. Implementa el check (si quieres tratar los plurales en tu código) o el método check_single (que lo hace por ti).

He aquí algunos ejemplos:

Para instalar controles personalizados, proporciona una ruta muy clara de clase Python en CHECK_LIST, ver Controles de calidad personalizados, sugerencias automáticas y auto-correcciones.

Comprueba que el texto de la traducción no contiene «foo»

Esta es una comprobación bastante simple que se limita a revisar si a la traducción le falta la cadena «tal».

"""Simple quality check example."""

from django.utils.translation import gettext_lazy

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
    # 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, target, unit):
        return "foo" in target

Comprueba que los plurales del texto traducido al checo son diferentes

Comprobación que utiliza la información de idioma para cerciorarse de que las dos formas de plural en checo no sean iguales.

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

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):
        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