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#
You can fine-tune Weblate’s behavior by using flags. The flags provide visual feedback to the translators and help them to improve their translation. This can be done on the source string level (see Información adicional sobre las cadenas de origen), or in the Configuración de componentes (Indicadores de traducción). Some file formats also allow to specify flags directly in the format (see Formatos de archivo admitidos).
The flags are comma-separated; if they have parameters, they are separated with colon. You can use quotes to include whitespaces or special characters in the string. For example:
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"^#*"
To verify that translators do not change the heading of a Markdown document: A failing check will be triggered if the string “### Index” is translated as “# Indice”
placeholders:r"\]\([^h].*?\)"
To make sure that internal links are not being translated (i.e. [test](../checks) does not become [test](../chequeos).
Aquí hay una lista de banderas actualmente aceptadas:
rst-textTratar un texto como un documento reStructuredText, afecta a Traducción no modificada.
dos-eolUtiliza los marcadores de fin de línea de DOS en lugar de los de Unix (
r\ninstead of\n).read-onlyLa cadena es de solo lectura y no debe editarse en Weblate; vea Cadenas de solo lectura.
terminologyUsed in Glosario. 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: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 la traducción.
xml-textTratar el texto como un documento XML, afecta a Sintaxis XML y Marcación XML.
font-family:NOMBREDefinir la familia de fuentes para las comprobaciones de renderización, ver Gestionar tipos de letra.
font-weight:PESODefinir el peso de la fuente para las comprobaciones de renderización, ver Gestionar tipos de letra.
font-size:TAMAÑODefinir el tamaño de la fuente para las comprobaciones de renderización, ver Gestionar tipos de letra.
font-spacing:ESPACIADODefinir el espaciado de las letras para las comprobaciones de renderización, ver Gestionar tipos de letra.
icu-flags:FLAGSDefina las banderas 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:NOMBRE:NOMBRE2:...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".variantes:FUENTEMarcar esta cadena como una variante de cadena con origen coincidente. Ver Variantes de cadenas.
regex:REGEXExpresión regular utilizada para relacionar traducciones; vea Expresión regular.
forbiddenIndica una traducción prohibida en un glosario, ver Traducciones prohibidas.
strict-sameHace que «Traducción no modificada» evite la lista de palabras incorporada; vea Traducción no modificada.
strict-formatMake format checks enforce using format even for plural forms with a single value, see Cadenas formateadas.
check-glossaryActivar el control de calidad No se ajusta al glosario.
angularjs-formatActivar el control de calidad Cadena de interpolación de AngularJS.
c-formatActivar el control de calidad Formato C.
c-sharp-formatActivar el control de calidad Formato C#.
es-formatActivar el control de calidad Literales de plantilla ECMAScript.
i18next-interpolationActivar el control de calidad Interpolación con i18next.
icu-message-formatHabilite el control de calidad MessageFormat de ICU.
java-printf-formatHabilite el control de calidad Formato Java.
java-formatActivar el control de calidad MessageFormat de Java.
javascript-formatActivar el control de calidad Formato JavaScript.
lua-formatActivar el control de calidad Formato Lua.
object-pascal-formatActivar el control de calidad Formato de Object Pascal.
percent-placeholdersActivar el control de calidad Sustitutivos con signo de porcentaje.
perl-formatActivar el control de calidad Formato Perl.
php-formatActivar el control de calidad Formato PHP.
python-brace-formatActivar el control de calidad Formato de llaves de Python.
python-formatActivar 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.
md-textTreat text as a Markdown document, and provide Markdown syntax highlighting on the translation text area. Enables Enlaces de Markdown, Referencias de Markdown, and Sintaxis de Markdown quality checks.
case-insensitiveAjustar 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-htmlActiva el control de calidad HTML inseguro.
urlLa cadena debe consistir de solo una URL. Activa el control de calidad URL.
ignore-all-checksIgnora todos los controles de calidad.
ignore-bbcodeSaltar el control de calidad Marcación BBCode.
ignore-duplicateOmite el control de calidad Palabras consecutivas duplicadas.
ignore-check-glossaryOmite el control de calidad No se ajusta al glosario.
ignore-double-spaceOmite el control de calidad Espacio duplicado.
ignore-angularjs-formatOmite el control de calidad Cadena de interpolación de AngularJS.
ignore-c-formatOmite el control de calidad Formato C.
ignore-c-sharp-formatOmite el control de calidad Formato C#.
ignore-es-formatOmite el control de calidad Literales de plantilla ECMAScript.
ignore-i18next-interpolationOmite el control de calidad Interpolación con i18next.
ignore-icu-message-formatOmita el control de calidad MessageFormat de ICU.
ignore-java-printf-formatOmita el control de calidad Formato Java.
ignore-java-formatOmite el control de calidad MessageFormat de Java.
ignore-javascript-formatOmite el control de calidad Formato JavaScript.
ignore-lua-formatOmita el control de calidad Formato Lua.
ignore-object-pascal-formatOmita el control de calidad Formato de Object Pascal.
ignore-percent-placeholdersPasa por alto la comprobación de calidad Sustitutivos con signo de porcentaje.
ignore-perl-formatOmita el control de calidad Formato Perl.
ignore-php-formatOmita el control de calidad Formato PHP.
ignore-python-brace-formatOmita el control de calidad Formato de llaves de Python.
ignore-python-formatOmita el control de calidad Formato Python.
ignore-qt-formatOmita el control de calidad Formato Qt.
ignore-qt-plural-formatOmita el control de calidad Formato de plurales de Qt.
ignore-ruby-formatOmita el control de calidad Formato Ruby.
ignore-scheme-formatOmita el control de calidad Formato Scheme.
ignore-vue-formatOmita el control de calidad Formato de Vue I18n.
ignore-translatedOmita el control de calidad Se había traducido.
ignore-inconsistentOmita el control de calidad Incoherente.
ignore-kashidaOmite la comprobación de calidad Kashida utilizado.
ignore-md-linkOmite la comprobación de calidad Enlaces de Markdown.
ignore-md-reflinkOmite la comprobación de calidad Referencias de Markdown.
ignore-md-syntaxOmite la comprobación de calidad Sintaxis de Markdown.
ignore-max-lengthOmite la comprobación de calidad Longitud máxima de la traducción.
ignore-max-sizeOmite la comprobación de calidad Tamaño máximo de la traducción.
ignore-escaped-newlineOmite la comprobación de calidad \n desiguales.
ignore-end-colonOmite la comprobación de calidad Dos puntos desiguales.
ignore-end-ellipsisOmite la comprobación de calidad Puntos suspensivos desiguales.
ignore-end-exclamationOmite la comprobación de calidad Signo de exclamación desigual.
ignore-end-stopOmite el control de calidad Punto final desigual.
ignore-end-questionOmite el control de calidad Signo de interrogación desigual.
ignore-end-semicolonOmite la comprobación de calidad Punto y coma desigual.
ignore-newline-countOmite la comprobación de calidad Saltos de renglón desiguales.
ignore-pluralsOmite el control de calidad Faltan plurales.
ignore-placeholdersPasa por alto la comprobación de calidad Sustitutivos.
ignore-punctuation-spacingOmite la comprobación de calidad Espaciado de puntuación.
ignore-regexOmite la comprobación de calidad Expresión regular.
ignore-reusedSkip the Traducciones reutilizadas quality check.
ignore-same-pluralsOmite la comprobación de calidad Mismos plurales.
ignore-begin-newlineOmite la comprobación de calidad Salto de renglón al inicio.
ignore-begin-spaceOmite la comprobación de calidad Espacios iniciales.
ignore-end-newlineOmite la comprobación de calidad Salto de renglón al final.
ignore-end-spaceOmite la comprobación de calidad Espacio al final.
ignore-sameOmite la comprobación de calidad Traducción no modificada.
ignore-safe-htmlOmite la comprobación de calidad HTML inseguro.
ignore-urlOmite la comprobación de calidad URL.
ignore-xml-tagsOmite la comprobación de calidad Marcación XML.
ignore-xml-invalidOmite la comprobación de calidad Sintaxis XML.
ignore-zero-width-spaceOmite la comprobación de calidad Espacio de anchura cero.
ignore-ellipsisOmite la comprobación de calidad Puntos suspensivos.
ignore-icu-message-format-syntaxOmite la comprobación de calidad Sintaxis MessageFormat de ICU.
ignore-long-untranslatedOmite la comprobación de calidad Largamente no traducida.
ignore-multiple-failuresOmite la comprobación de calidad Varias comprobaciones fallidas.
ignore-unnamed-formatOmite la comprobación de calidad:ref:check-unnamed-format.
ignore-optional-pluralOmite 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:
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:
El tipo de letra y el estilo se reconocen automáticamente después de cargarlos:
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:500Define la anchura máxima en píxeles.
font-family:ubuntuDefine el grupo de fuentes 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, (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.
Subclase del weblate.checks.Check
Defina algunos atributos.
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 self.is_language(unit, ("cs",)):
return targets[1] == targets[2]
return False
def check_single(self, source, target, unit):
"""We don't check target strings here."""
return False