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:

# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

from django.utils.translation import gettext_lazy

from weblate.trans.autofixes.base import AutoFix


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

    name = gettext_lazy("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, complementos y autocorrecciones.

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

Aquí hay una lista de banderas actualmente aceptadas:

rst-text

Tratar un texto como un documento reStructuredText, afecta a Traducción no modificada.

dos-eol

Utiliza los marcadores de fin de línea de DOS en lugar de los de Unix (r\n instead of \n).

read-only

La cadena es de solo lectura y no debe editarse en Weblate; vea 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 la 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 renderización, ver Gestionar tipos de letra.

font-weight:WEIGHT

Definir el peso de la fuente para las comprobaciones de renderización, ver Gestionar tipos de letra.

font-size:SIZE

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

font-spacing:SPACING

Definir el espaciado de las letras para las comprobaciones de renderización, ver Gestionar tipos de letra.

icu-flags:FLAGS

Defina las banderas 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; vea 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 la 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; vea Expresión regular.

forbidden

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

strict-same

Hace que «Traducción no modificada» evite la lista de palabras incorporada; vea Traducción no modificada.

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.

check-glossary

Activar el control de calidad No se ajusta al glosario.

angularjs-format

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

c-format

Activar el control de calidad Formato C.

c-sharp-format

Activar el control de calidad Formato C#.

es-format

Activar el control de calidad Literales de plantilla ECMAScript.

i18next-interpolation

Activar el control de calidad Interpolación con i18next.

icu-message-format

Habilite el control de calidad MessageFormat de ICU.

java-printf-format

Habilite el control de calidad Formato Java.

java-format

Activar el control de calidad MessageFormat de Java.

javascript-format

Activar el control de calidad Formato JavaScript.

lua-format

Activar el control de calidad Formato Lua.

object-pascal-format

Activar el control de calidad Formato de Object Pascal.

percent-placeholders

Activar el control de calidad Sustitutivos con signo de porcentaje.

perl-brace-format

Activa el control de calidad Formato de llaves Perl.

perl-format

Activar el control de calidad Formato Perl.

php-format

Activar el control de calidad Formato PHP.

python-brace-format

Activar el control de calidad Formato de llaves de Python.

python-format

Activar 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.

md-text

Trata el 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.

case-insensitive

Ajustar el comportamiento de las comprobaciones para que no distingan entre mayúsculas y minúsculas. Actualmente sólo afecta a la comprobación de calidad Sustitutivos.

safe-html

Activa el control de calidad HTML inseguro.

url

La cadena debe consistir de solo una URL. Activa el control de calidad URL.

ignore-all-checks

Ignora todos los controles de calidad.

ignore-bbcode

Saltar el control de calidad Marcación BBCode.

ignore-duplicate

Omite el control de calidad Palabras consecutivas duplicadas.

ignore-check-glossary

Omite el control de calidad No se ajusta al glosario.

ignore-double-space

Omite el control de calidad Espacio duplicado.

ignore-angularjs-format

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

ignore-c-format

Omite el control de calidad Formato C.

ignore-c-sharp-format

Omite el control de calidad Formato C#.

ignore-es-format

Omite el control de calidad Literales de plantilla ECMAScript.

ignore-i18next-interpolation

Omite el control de calidad Interpolación con i18next.

ignore-icu-message-format

Omita el control de calidad MessageFormat de ICU.

ignore-java-printf-format

Omita el control de calidad Formato Java.

ignore-java-format

Omite el control de calidad MessageFormat de Java.

ignore-javascript-format

Omite el control de calidad Formato JavaScript.

ignore-lua-format

Omita el control de calidad Formato Lua.

ignore-object-pascal-format

Omita el control de calidad Formato de Object Pascal.

ignore-percent-placeholders

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

ignore-perl-brace-format

Omita el control de calidad Formato de llaves Perl.

ignore-perl-format

Omita el control de calidad Formato Perl.

ignore-php-format

Omita el control de calidad Formato PHP.

ignore-python-brace-format

Omita el control de calidad Formato de llaves de Python.

ignore-python-format

Omita el control de calidad Formato Python.

ignore-qt-format

Omita el control de calidad Formato Qt.

ignore-qt-plural-format

Omita el control de calidad Formato de plurales de Qt.

ignore-ruby-format

Omita el control de calidad Formato Ruby.

ignore-scheme-format

Omita el control de calidad Formato Scheme.

ignore-vue-format

Omita el control de calidad Formato de Vue I18n.

ignore-translated

Omita el control de calidad Se había traducido.

ignore-inconsistent

Omita el control de calidad Incoherente.

ignore-kashida

Omite la comprobación de calidad Kashida utilizado.

ignore-md-link

Omite la comprobación de calidad Enlaces de Markdown.

ignore-md-reflink

Omite la comprobación de calidad Referencias de Markdown.

ignore-md-syntax

Omite la comprobación de calidad Sintaxis de Markdown.

ignore-max-length

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

ignore-max-size

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

ignore-escaped-newline

Omite la comprobación de calidad \n desiguales.

ignore-end-colon

Omite la comprobación de calidad Dos puntos desiguales.

ignore-end-ellipsis

Omite la comprobación de calidad Puntos suspensivos desiguales.

ignore-end-exclamation

Omite la comprobación de calidad Signo de exclamación desigual.

ignore-end-stop

Omite el control de calidad Punto final desigual.

ignore-end-question

Omite el control de calidad Signo de interrogación desigual.

ignore-end-semicolon

Omite la comprobación de calidad Punto y coma desigual.

ignore-newline-count

Omite la comprobación de calidad Saltos de renglón desiguales.

ignore-plurals

Omite el control de calidad Faltan plurales.

ignore-placeholders

Pasa por alto la comprobación de calidad Sustitutivos.

ignore-punctuation-spacing

Omite la comprobación de calidad Espaciado de puntuación.

ignore-regex

Omite la comprobación de calidad Expresión regular.

ignore-reused

Omite la comprobación de calidad Traducciones reutilizadas.

ignore-same-plurals

Omite la comprobación de calidad Mismos plurales.

ignore-begin-newline

Omite la comprobación de calidad Salto de renglón al inicio.

ignore-begin-space

Omite la comprobación de calidad Espacios iniciales.

ignore-end-newline

Omite la comprobación de calidad Salto de renglón al final.

ignore-end-space

Omite la comprobación de calidad Espacio al final.

ignore-same

Omite la comprobación de calidad Traducción no modificada.

ignore-safe-html

Omite la comprobación de calidad HTML inseguro.

ignore-url

Omite la comprobación de calidad URL.

ignore-xml-tags

Omite la comprobación de calidad Marcación XML.

ignore-xml-invalid

Omite la comprobación de calidad Sintaxis XML.

ignore-zero-width-space

Omite la comprobación de calidad Espacio de anchura cero.

ignore-ellipsis

Omite la comprobación de calidad Puntos suspensivos.

ignore-icu-message-format-syntax

Omite la comprobación de calidad Sintaxis MessageFormat de ICU.

ignore-long-untranslated

Omite la comprobación de calidad Largamente no traducida.

ignore-multiple-failures

Omite la comprobación de calidad Varias comprobaciones fallidas.

ignore-unnamed-format

Omite la comprobación de calidad:ref:check-unnamed-format.

ignore-optional-plural

Omite 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).

Forzar comprobaciones

Puede configurar una lista de comprobaciones que no pueden ser ignoradas estableciendo Comprobaciones obligatorias en Configuración de componentes. Cada una de las comprobaciones de la lista no se puede descartar en la interfaz de usuario y cualquier cadena que falle esta comprobación se marca como Needs editing (ver Estados de traducción).

Nota

La activación de la comprobación no la habilita automáticamente. La comprobación puede activarse añadiendo la bandera correspondiente a las banderas de cadenas o componentes.

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 renderizado 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ú Manage 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

El tipo de letra y el estilo se reconocen automáticamente después de cargarlos:

../_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 fuentes 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, (ver 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, complementos y autocorrecciones.

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».

# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

"""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
    name = gettext_lazy("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.

# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

"""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
    name = gettext_lazy("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