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:
Indicadores adicionales de cadena origen:
Información adicional sobre las cadenas de origen describe edición manual.
Edición en masa puede usarse para aplicar indicadores en guion.
Edición en masa de complemento puede aplicar indicadores automáticamente.
Marcadores por cadena extraídos del formato de archivo, consulta Formatos de archivos de localizaciónn.
Indicadores de traducción (actualmente solo indicadores
de sólo lecturapara cadenas de origen bilingües o cuando está apagada la edición de plantilla monolingüe).Indicadores específicos del formato del archivo.
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-onlyLa cadena es de solo lectura y no debe editarse en Weblate; consulte Cadenas de solo lectura.
terminologySe 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:NPrioridad 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:NLimita la longitud máxima de una cadena a N caracteres, véase Longitud máxima de traducción.
xml-textTratar el texto como un documento XML, afecta a Sintaxis XML y Marcación XML.
font-family:NAMEDefinir la familia de fuentes para las comprobaciones de interpretación, consulte Gestionar tipos de letra.
font-weight:WEIGHTDefinir la ponderación de fuente para comprobantes de representación, consulte Gestionar tipos de letra.
font-size:SIZEDefinir el tamaño de la fuente para las comprobaciones de representación, consulte Gestionar tipos de letra.
font-spacing:SPACINGDefinir el espaciado de letras para las comprobaciones de representación, consulte Gestionar tipos de letra.
icu-flags:FLAGSDefine los indicadores para personalizar el comportamiento del control de calidad MessageFormat de ICU.
icu-tag-prefix:PREFIXEstablezca 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:SOURCEMarcar esta cadena como una variante de cadena con origen coincidente. Ver Variantes de cadenas.
regex:REGEXExpresión regular utilizada para relacionar traducciones; consulte Expresión regular.
discard:NAMEDescarta indicador definido sobre un nivel más alto.
forbiddenIndica una traducción prohibida en un glosario, ver Traducciones prohibidas.
strict-sameCrea el Traducción no modificada evita utilizar las palabras de excepciones empotradas.
strict-formatHacer que las comprobaciones de formato obliguen a usar el formato incluso para formas plurales con un único valor, véase Cadenas formateadas.
case-insensitiveAjustar el comportamiento de las comprobaciones para que no distingan capitalinas. Actualmente sólo afecta a la comprobación de calidad de Sustitutivos.
bbcode-textTratar un texto como un documento Bulletin Board Code (BBCode), afecta a Traducción no modificada. Habilita el comprobante de calidad Marcación BBCode.
check-glossaryActivar el control de calidad No se ajusta al glosario.
fluent-partsHabilita el comprobante de calidad Partes fluidas.
fluent-referencesHabilita el comprobante de calidad Referencias fluidas.
fluent-target-inner-htmlActiva el control de calidad Traducción interna fluida de HTML.
fluent-target-syntaxActivar el control de calidad Fluent sintaxis de traducción.
angularjs-formatActivar el control de calidad Cadena de interpolación de AngularJS.
automattic-components-formatActiva la comprobación de calidad Formateo de componentes automáticos.
c-formatActiva el control de calidad Formato C.
c-sharp-formatActiva el control de calidad Formato C#.
csharp-formatActiva el control de calidad Formato C#.
es-formatActiva el control de calidad Literales de plantilla ECMAScript.
i18next-interpolationActiva el control de calidad Interpolación con i18next.
icu-message-formatActiva los controles de calidad MessageFormat de ICU y Sintaxis MessageFormat de ICU.
java-printf-formatActiva el control de calidad Formato Java.
java-formatActiva el control de calidad MessageFormat de Java.
auto-java-messageformatTrata 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-formatActiva el control de calidad Formato JavaScript.
laravel-formatActiva el control de calidad Formato Laravel.
lua-formatActiva el control de calidad Formato Lua.
object-pascal-formatActiva el control de calidad Formato de Object Pascal.
objc-formatActiva el control de calidad Formato de Objetive-C.
percent-placeholdersActiva el control de calidad Sustitutivos con signo de porcentaje.
perl-brace-formatActiva el control de calidad Formato de llaves Perl.
perl-formatActiva el control de calidad Formato Perl.
php-formatActiva el control de calidad Formato PHP.
python-brace-formatActiva el control de calidad Formato de llaves de Python.
python-formatActiva el control de calidad Formato Python.
qt-formatActiva el control de calidad Formato Qt.
qt-plural-formatActiva el control de calidad Formato de plurales de Qt.
ruby-formatActiva el control de calidad Formato Ruby.
scheme-formatActiva el control de calidad Formato Scheme.
vue-formatActiva el control de calidad Formato de Vue I18n.
rst-textTratar 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-textTrata 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-lengthHabilita la comprobación de calidad en Longitud máxima de traducción.
max-sizeHabilita la comprobación de calidad en Tamaño máximo de la traducción.
placeholdersHabilita el control de calidad en Sustitutivos.
regexHabilita la comprobación de calidad en Expresión regular.
safe-htmlHabilita el control de calidad en HTML inseguro.
auto-safe-htmlTrata 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.
urlLa cadena consistiría solo un URL. Habilita el control de calidad URL.
fluent-source-inner-htmlHabilita el control de calidad en HTML interno de una fuente fluida.
fluent-source-syntaxHabilita el control de calidad en Sintaxis de la fuente Fluent.
ignore-all-checksIgnora todos los controles de calidad.
ignore-bbcodePasa por alto la comprobación de calidad Marcación BBCode.
ignore-xml-chars-around-tagsPasa por alto la comprobación de calidad en Caracteres alrededor de etiquetas XML.
ignore-duplicatePasa por alto la comprobación de calidad Palabras consecutivas duplicadas.
ignore-check-glossaryPasa por alto la comprobación de calidad No se ajusta al glosario.
ignore-double-spacePasa por alto la comprobación de calidad Espacio duplicado.
ignore-fluent-partsPasa por alto la comprobación de calidad Partes fluidas.
ignore-fluent-referencesPasa por alto la comprobación de calidad Referencias fluidas.
ignore-fluent-target-inner-htmlPasa por alto la comprobación de calidad Traducción interna fluida de HTML.
ignore-fluent-target-syntaxPasa por alto la comprobación de calidad Fluent sintaxis de traducción.
ignore-angularjs-formatPasa por alto la comprobación de calidad Cadena de interpolación de AngularJS.
ignore-automattic-components-formatPasa por alto la comprobación de calidad Formateo de componentes automáticos.
ignore-c-formatPasa por alto la comprobación de calidad Formato C.
ignore-c-sharp-formatPasa por alto la comprobación de calidad Formato C#.
ignore-es-formatPasa por alto la comprobación de calidad Literales de plantilla ECMAScript.
ignore-i18next-interpolationPasa por alto la comprobación de calidad Interpolación con i18next.
ignore-icu-message-formatPasa por alto la comprobación de calidad MessageFormat de ICU.
ignore-java-printf-formatPasa por alto la comprobación de calidad Formato Java.
ignore-java-formatPasa por alto la comprobación de calidad MessageFormat de Java.
ignore-javascript-formatPasa por alto la comprobación de calidad Formato JavaScript.
ignore-laravel-formatPasa por alto la comprobación de calidad en Formato Laravel.
ignore-lua-formatPasa por alto la comprobación de calidad Formato Lua.
ignore-object-pascal-formatPasa por alto la comprobación de calidad Formato de Object Pascal.
ignore-objc-formatPasa por alto la comprobación de calidad Formato de Objetive-C.
ignore-percent-placeholdersPasa por alto la comprobación de calidad Sustitutivos con signo de porcentaje.
ignore-perl-brace-formatPasa por alto la comprobación de calidad Formato de llaves Perl.
ignore-perl-formatPasa por alto la comprobación de calidad Formato Perl.
ignore-php-formatPasa por alto la comprobación de calidad Formato PHP.
ignore-python-brace-formatPasa por alto la comprobación de calidad Formato de llaves de Python.
ignore-python-formatPasa por alto la comprobación de calidad Formato Python.
ignore-qt-formatPasa por alto la comprobación de calidad Formato Qt.
ignore-qt-plural-formatPasa por alto la comprobación de calidad Formato de plurales de Qt.
ignore-ruby-formatPasa por alto la comprobación de calidad Formato Ruby.
ignore-scheme-formatPasa por alto la comprobación de calidad Formato Scheme.
ignore-vue-formatPasa por alto la comprobación de calidad Formato de Vue I18n.
ignore-translatedPasa por alto la comprobación de calidad Ha sido traducido.
ignore-inconsistentPasa por alto la comprobación de calidad Incoherente.
ignore-rst-referencesPasa por alto la comprobación de calidad reStructuredText inconsistente.
ignore-kashidaPasa por alto la comprobación de calidad Kashida utilizado.
ignore-md-linkPasa por alto la comprobación de calidad Enlaces de Markdown.
ignore-md-reflinkPasa por alto la comprobación de calidad Referencias de Markdown.
ignore-md-syntaxPasa por alto la comprobación de calidad Sintaxis de Markdown.
ignore-max-lengthPasa por alto la comprobación de calidad Longitud máxima de traducción.
ignore-max-sizePasa por alto la comprobación de calidad Tamaño máximo de la traducción.
ignore-escaped-newlinePasa por alto la comprobación de calidad \n desiguales.
ignore-end-colonPasa por alto la comprobación de calidad Dos puntos desiguales.
ignore-end-ellipsisPasa por alto la comprobación de calidad Puntos suspensivos desiguales.
ignore-end-exclamationPasa por alto la comprobación de calidad Signo de exclamación desigual.
ignore-end-stopPasa por alto la comprobación de calidad Punto final desigual.
ignore-end-interrobangPasa por alto la comprobación de calidad Interrobang mal ajustado.
ignore-end-questionPasa por alto la comprobación de calidad Signo de interrogación desigual.
ignore-end-semicolonPasa por alto la comprobación de calidad Punto y coma desigual.
ignore-newline-countPasa por alto la comprobación de calidad Saltos de renglón desiguales.
ignore-pluralsPasa por alto la comprobación de calidad Faltan plurales.
ignore-multiple-capitalPasa por alto la comprobación de calidad en Múltiples capitalinas.
ignore-kabyle-charactersPasa por alto la comprobación de calidad Caracteres no estándar en Kabyle.
ignore-placeholdersPasa por alto la comprobación de calidad Sustitutivos.
ignore-prohibited-initial-characterPasa por alto la comprobación de calidad Carácter inicial prohibido.
ignore-punctuation-spacingPasa por alto la comprobación de calidad Espaciado de puntuación.
ignore-regexPasa por alto la comprobación de calidad Expresión regular.
ignore-rst-syntaxPasa por alto la comprobación de calidad Error de sintaxis reStructuredText.
ignore-reusedPasa por alto la comprobación de calidad Traducciones reutilizadas.
ignore-same-pluralsPasa por alto la comprobación de calidad Mismos plurales.
ignore-begin-newlinePasa por alto la comprobación de calidad Salto de renglón al inicio.
ignore-begin-spacePasa por alto la comprobación de calidad Espacios iniciales.
ignore-end-newlinePasa por alto la comprobación de calidad Salto de renglón al final.
ignore-end-spacePasa por alto la comprobación de calidad Espacio al final.
ignore-samePasa por alto la comprobación de calidad Traducción no modificada.
ignore-safe-htmlPasa por alto la comprobación de calidad HTML inseguro.
ignore-urlPasa por alto la comprobación de calidad URL.
ignore-xml-tagsPasa por alto la comprobación de calidad Marcación XML.
ignore-xml-invalidPasa por alto la comprobación de calidad Sintaxis XML.
ignore-zero-width-spacePasa por alto la comprobación de calidad Espacio de anchura cero.
ignore-ellipsisPasa por alto la comprobación de calidad Puntos suspensivos.
ignore-fluent-source-inner-htmlPasa por alto la comprobación de calidad HTML interno de una fuente fluida.
ignore-fluent-source-syntaxPasa por alto la comprobación de calidad Sintaxis de la fuente Fluent.
ignore-icu-message-formatPasa por alto la comprobación de calidad Sintaxis MessageFormat de ICU.
ignore-long-untranslatedPasa por alto la comprobación de calidad Larga no traducida.
ignore-multiple-failuresPasa por alto la comprobación de calidad Varias comprobaciones fallidas.
ignore-unnamed-formatPasa por alto la comprobación de calidad Varias variables sin nombre.
ignore-optional-pluralPasa 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:
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:
Font-family and style are automatically recognized after uploading them:
Puedes tener varias fuentes cargadas en Weblate:
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:5Define 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:ubuntuDefine el grupo de tipografía a utilizar especificando su identificador.
font-size:22Define 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.
Subclase del weblate.checks.Check
Defina algunos atributos.
Implementa el
check(si quieres tratar los plurales en tu código) o el métodocheck_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