Verificações e correções

Correções automáticas personalizadas

Também pode implementar a sua própria correção automática, além das predefinidas e incluí-las em AUTOFIX_LIST.

As correções automáticas são poderosas, mas também podem causar danos; tenha cuidado ao escrever uma.

Por exemplo, a correção automática a seguir iria substituir cada ocorrência da cadeia foo, numa tradução com 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 verificações personalizadas, forneça um caminho totalmente qualificado à classe Python em AUTOFIX_LIST, veja Custom quality checks, add-ons, automatic suggestions and auto-fixes.

Personalizando comportamento a usar marcadores

Pode ajustar o comportamento do Weblate usando marcadores. Os marcadores fornecem feedback visual aos tradutores e os ajudam a melhorar a sua tradução. Os marcadores são mesclados a partir das seguintes fontes:

Os marcadores são separados por vírgulas; se tiverem parâmetros, eles são separados por dois pontos. Pode usar aspas para incluir espaços em branco ou caracteres especiais na cadeia. Por exemplo:

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

Aspas simples e duplas são aceitas e caracteres especiais são tratados com barra invertida:

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

Para verificar se os tradutores não alteram o título de um documento Markdown. Uma verificação com falha será acionada se a cadeia ### Index for traduzido como # Indice.

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

Para garantir que as ligações internas não estão a ser traduzidos (ou seja, [test](../checks) não se torna [test](../chequeos)).

Marcadores definidos num nível mais alto podem ser descartados com a sintaxe discard:NAME. Por exemplo, se um componente estiver configurado como safe-html, poderá adicionar discard:safe-html aos marcadores de cadeias para ignorá-lo esta cadeia especifica.

Aqui está uma lista de marcadores atualmente aceites:

read-only

A cadeia é apenas para leitura e não deve ser editada no Weblate, veja Cadeias apenas de leitura.

terminology

Usado em Glossário. Copia a cadeia em todos os idiomas do Glossário para que possa ser usada de forma consistente em todas as traduções. Também útil em combinação com read-only, por exemplo em nomes de produtos.

priority:N

Prioridade da cadeia. As cadeias de maior prioridade são apresentados primeiro para tradução. A prioridade predefinida é 100, quanto maior prioridade que um texto tem, mais cedo é oferecido para tradução.

max-length:N

Limita o comprimento máximo de uma cadeia a N caracteres, veja Tamanho máximo da tradução.

xml-text

Trata o texto como documento XML, afeta Sintaxe XML e Markup XML.

font-family:NAME

Define a família de letras para verificações da renderização, veja Gerir letras.

font-weight:WEIGHT

Define o peso da letra para verificações da renderização, veja Gerir letras.

font-size:SIZE

Define o tamanho da letra para verificações da renderização, veja Gerir letras.

font-spacing:SPACING

Define o espaçamento de letras para verificações da renderização, veja Gerir letras.

icu-flags:FLAGS

Define marcadores para personalizar o comportamento da verificação de qualidade MessageFormat do ICU.

icu-tag-prefix:PREFIX

Define um prefixo necessário para etiquetas XML para a verificação de qualidade MessageFormat do ICU.

placeholders:NAME:NAME2:...

Cadeias de espaço reservado esperados na tradução, veja Espaços reservados.

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

Substituições para realizar quando verificar os parâmetros de texto resultantes (por exemplo, em Tamanho máximo da tradução ou Tamanho máximo da tradução). O caso de utilização típico para isso é expandir os objetos colocáveis para garantir que o texto se ajusta até com os valores longos, por exemplo: replacements:%s:"John Doe".

variants:SOURCE

Marque esta cadeia de carateres como uma variante de cadeia de carateres com a fonte correspondente. Consulte Variantes de cadeias.

regex:REGEX

Expressão regular para corresponder à tradução; veja Expressão regular.

discard:NAME

Descarta o marcador definido num nível superior.

forbidden

Indica tradução proibida num glossário, veja Traduções proibidas.

strict-same

Faz Tradução inalterada evitar o uso de exceções de palavras embutidas.

strict-format

Faça com que as verificações de formato imponham o uso do formato mesmo para formas de plural com um único valor, consulte Cadeias formatadas.

case-insensitive

Ajustar o comportamento de verificação para não diferenciar maiúsculas de minúsculas. Atualmente, isso afeta apenas a verificação de qualidade Espaços reservados.

bbcode-text

Treat a text as an Bulletin Board Code (BBCode) document, affects Tradução inalterada. Enables the Markup BBCode quality check.

check-glossary

Enables the Não segue o glossário quality check.

fluent-parts

Enables the Partes Fluent quality check.

fluent-references

Enables the Referências Fluent quality check.

fluent-target-inner-html

Enables the Tradução Fluent HTML interno quality check.

fluent-target-syntax

Enables the Sintaxe de tradução Fluent quality check.

angularjs-format

Enables the Cadeia de interpolação AngularJS quality check.

automattic-components-format

Enables the Formatação de componentes do Automattic quality check.

c-format

Enables the Formato C quality check.

c-sharp-format

Enables the Formato C# quality check.

csharp-format

Enables the Formato C# quality check.

es-format

Enables the Literais de modelo de ECMAScript quality check.

i18next-interpolation

Enables the Interpolação de i18next quality check.

icu-message-format

Enables the MessageFormat do ICU and Sintaxe de MessageFormat do ICU quality checks.

java-printf-format

Enables the Formato Java quality check.

java-format

Enables the Formato de Mensagem Java quality check.

auto-java-messageformat

Treat a text as conditional Java MessageFormat, enabling Formato de Mensagem Java only when the source contains Java MessageFormat placeholders. Enables the Formato de Mensagem Java quality check.

javascript-format

Enables the Formato JavaScript quality check.

laravel-format

Enables the Formato Laravel quality check.

lua-format

Enables the Formato Lua quality check.

object-pascal-format

Enables the Formato Object Pascal quality check.

objc-format

Enables the Formato de Objective-C quality check.

percent-placeholders

Enables the Espaços reservados de percentagem quality check.

perl-brace-format

Enables the Formato de chave Perl quality check.

perl-format

Enables the Formato Perl quality check.

php-format

Enables the Formato PHP quality check.

python-brace-format

Enables the Formato de chaveta Python quality check.

python-format

Enables the Formato Python quality check.

qt-format

Enables the Formato Qt quality check.

qt-plural-format

Enables the Forma plural Qt quality check.

ruby-format

Enables the Formato Ruby quality check.

scheme-format

Enables the Formato Scheme quality check.

vue-format

Enables the Formatação vue I18n quality check.

rst-text

Treat a text as an reStructuredText document, affects Tradução inalterada. Enables the reStructuredText inconsistente and Erro de sintaxe reStructuredText quality checks.

md-text

Treat a text as a Markdown document, and provide Markdown syntax highlighting on the translation text area. Enables the Hiperligações de marcação, Referências de Markdown and Sintaxe de Markdown quality checks.

max-length

Enables the Tamanho máximo da tradução quality check.

max-size

Enables the Tamanho máximo da tradução quality check.

placeholders

Enables the Espaços reservados quality check.

regex

Enables the Expressão regular quality check.

safe-html

Enables the HTML inseguro quality check.

auto-safe-html

Treat a text as conditional HTML, enabling HTML inseguro only for plain text or source strings that contain standard HTML markup or valid custom elements. This is useful for extended Markdown variants such as MDX, where angle-bracket syntax may not be HTML. Enables the HTML inseguro quality check.

url

The string should consist of only a URL. Enables the URL quality check.

fluent-source-inner-html

Enables the HTML interno de fonte Fluent quality check.

fluent-source-syntax

Enables the Sintaxe de origem Fluent quality check.

ignore-all-checks

Ignora todas as verificações de qualidade.

ignore-bbcode

Ignora a verificação de qualidade Markup BBCode.

ignore-xml-chars-around-tags

Skip the Carateres em torno das etiquetas XML quality check.

ignore-duplicate

Ignora a verificação de qualidade Palavras consecutivas duplicadas.

ignore-check-glossary

Ignora a verificação de qualidade Não segue o glossário.

ignore-double-space

Ignora a verificação de qualidade Espaço duplo.

ignore-fluent-parts

Ignora a verificação de qualidade Partes Fluent.

ignore-fluent-references

Ignora a verificação de qualidade Referências Fluent.

ignore-fluent-target-inner-html

Ignora a verificação de qualidade Tradução Fluent HTML interno.

ignore-fluent-target-syntax

Ignora a verificação de qualidade Sintaxe de tradução Fluent.

ignore-angularjs-format

Ignora a verificação de qualidade Cadeia de interpolação AngularJS.

ignore-automattic-components-format

Ignora a verificação de qualidade Formatação de componentes do Automattic.

ignore-c-format

Ignora a verificação de qualidade Formato C.

ignore-c-sharp-format

Ignora a verificação de qualidade Formato C#.

ignore-es-format

Ignora a verificação de qualidade Literais de modelo de ECMAScript.

ignore-i18next-interpolation

Ignora a verificação de qualidade Interpolação de i18next.

ignore-icu-message-format

Ignora a verificação de qualidade MessageFormat do ICU.

ignore-java-printf-format

Ignorar a verificação de qualidade Formato Java.

ignore-java-format

Ignora a verificação de qualidade Formato de Mensagem Java.

ignore-javascript-format

Ignora a verificação de qualidade Formato JavaScript.

ignore-laravel-format

Skip the Formato Laravel quality check.

ignore-lua-format

Ignora a verificação de qualidade Formato Lua.

ignore-object-pascal-format

Ignora a verificação de qualidade Formato Object Pascal.

ignore-objc-format

Skip the Formato de Objective-C quality check.

ignore-percent-placeholders

Ignora a verificação de qualidade Espaços reservados de percentagem.

ignore-perl-brace-format

Ignora a verificação de qualidade Formato de chave Perl.

ignore-perl-format

Ignora a verificação de qualidade Formato Perl.

ignore-php-format

Ignora a verificação de qualidade Formato PHP.

ignore-python-brace-format

Ignora a verificação de qualidade Formato de chaveta Python.

ignore-python-format

Ignora a verificação de qualidade Formato Python.

ignore-qt-format

Ignora a verificação de qualidade Formato Qt.

ignore-qt-plural-format

Ignora a verificação de qualidade Forma plural Qt.

ignore-ruby-format

Ignora a verificação de qualidade Formato Ruby.

ignore-scheme-format

Ignora a verificação de qualidade Formato Scheme.

ignore-vue-format

Ignora a verificação de qualidade Formatação vue I18n.

ignore-translated

Ignora a verificação de qualidade Foi traduzido.

ignore-inconsistent

Ignora a verificação de qualidade Inconsistente.

ignore-rst-references

Ignora a verificação de qualidade reStructuredText inconsistente.

ignore-kashida

Ignora a verificação de qualidade Letra Kashida utilizada.

ignore-md-link

Ignora a verificação de qualidade Hiperligações de marcação.

ignore-md-reflink

Ignora a verificação de qualidade Referências de Markdown.

ignore-md-syntax

Ignora a verificação de qualidade Sintaxe de Markdown.

ignore-max-length

Ignora a verificação de qualidade Tamanho máximo da tradução.

ignore-max-size

Ignora a verificação de qualidade Tamanho máximo da tradução.

ignore-escaped-newline

Ignora a verificação de qualidade \n não correspondente.

ignore-end-colon

Ignora a verificação de qualidade Dois pontos não correspondentes.

ignore-end-ellipsis

Ignora a verificação de qualidade Reticências não correspondentes.

ignore-end-exclamation

Ignora a verificação de qualidade Ponto de exclamação não correspondente.

ignore-end-stop

Ignora a verificação de qualidade Ponto final não correspondente.

ignore-end-interrobang

Ignora a verificação de qualidade Interrobangue não compatível.

ignore-end-question

Ignora a verificação de qualidade Ponto de interrogação não correspondente.

ignore-end-semicolon

Ignora a verificação de qualidade Ponto e vírgula não correspondente.

ignore-newline-count

Ignora a verificação de qualidade Quebras de linha não coincidentes.

ignore-plurals

Ignora a verificação de qualidade Faltam plurais.

ignore-multiple-capital

Skip the Múltiplas maiúsculas quality check.

ignore-kabyle-characters

Ignora a verificação de qualidade Caracteres não padronizados em Kabyle.

ignore-placeholders

Ignora a verificação de qualidade Espaços reservados.

ignore-prohibited-initial-character

Ignora a verificação de qualidade Caractere inicial proibido.

ignore-punctuation-spacing

Ignora a verificação de qualidade Espaçamento da pontuação.

ignore-regex

Ignora a verificação de qualidade Expressão regular.

ignore-rst-syntax

Ignora a verificação de qualidade Erro de sintaxe reStructuredText.

ignore-reused

Ignora a verificação de qualidade Tradução reutilizada.

ignore-same-plurals

Ignora a verificação de qualidade Mesmos plurais.

ignore-begin-newline

Ignora a verificação de qualidade Nova linha no início.

ignore-begin-space

Ignora a verificação de qualidade Espaços no início.

ignore-end-newline

Ignora a verificação de qualidade Nova linha no final.

ignore-end-space

Ignora a verificação de qualidade Espaço no final.

ignore-same

Ignora a verificação de qualidade Tradução inalterada.

ignore-safe-html

Ignora a verificação de qualidade HTML inseguro.

ignore-url

Ignora a verificação de qualidade URL.

ignore-xml-tags

Ignora a verificação de qualidade Markup XML.

ignore-xml-invalid

Ignora a verificação de qualidade Sintaxe XML.

ignore-zero-width-space

Ignora a verificação de qualidade Espaçamento nulo.

ignore-ellipsis

Ignora a verificação de qualidade Reticências.

ignore-fluent-source-inner-html

Ignora a verificação de qualidade HTML interno de fonte Fluent.

ignore-fluent-source-syntax

Ignora a verificação de qualidade Sintaxe de origem Fluent.

ignore-icu-message-format

Ignora a verificação de qualidade Sintaxe de MessageFormat do ICU.

ignore-long-untranslated

Ignora a verificação de qualidade Não traduzido há muito tempo.

ignore-multiple-failures

Ignora a verificação de qualidade Várias verificações falhadas.

ignore-unnamed-format

Ignora a verificação de qualidade Várias variáveis sem nome.

ignore-optional-plural

Ignora a verificação de qualidade Não pluralizado.

Nota

Geralmente, a regra é chamada de ignore-* para qualquer verificação, utilizando o seu identificador, para que possa utilizá-la mesmo para as suas verificações personalizadas.

Estas etiquetas são compreendidas tanto nas definições de Configuração de componente, por definições das cadeia de carateres fonte quanto no próprio ficheiro de tradução (por exemplo, no GNU gettext).

Location-based flags

Alguns marcadores são adicionados às cadeias por padrão, com base nos seus locais. Isto significa que determinadas verificações serão automaticamente ativadas, dependendo de onde o texto for usado.

  • rst-text: Este marcador é adicionado automaticamente às cadeias nos ficheiros reStructuredText, se a extensão do local for .rst.

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

Forçar verificações

The enforced checks cannot be dismissed and mark string as Needs editing (see Estados de tradução). This prevents translators from hiding such checks.

Dica

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.

This is best used with checks that can cause serious issues when used like checks for Cadeias formatadas. Using for style checks like Tradução inalterada is not recommended because dismissal is sometimes a reasonable approach in these.

The Filtro de qualidade de tradução can then be used to exclude strings needing editing from being committed to the version control.

Gerir letras

Dica

As fontes carregadas no Weblate são usadas puramente para fins de verificação Tamanho máximo da tradução, elas não têm efeito na interface de utilizador do Weblate.

A verificação Tamanho máximo da tradução usada para calcular as dimensões do texto renderizado precisa de ser carregada no Weblate e selecionada a usar um marcador de tradução (ver Personalizando comportamento a usar marcadores).

Weblate font management tool in Fonts under the Operations menu of your translation project provides interface to upload and manage fonts. TrueType or OpenType fonts can be uploaded, set up font-groups and use those in the check.

Os grupos de letras permitem definir letras diferentes para idiomas diferentes, o que é normalmente necessário para idiomas não-latinos:

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

O grupos de letras são identificados pelo nome, que não pode conter espaços ou caracteres especiais, de modo que ele pode ser facilmente utilizado na definição da verificação:

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

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

../_images/font-edit.webp

Pode ter muitas letras carregadas para Weblate:

../_images/font-list.webp

Para utilizar os tipos de letra para verificar o comprimento da cadeia de carateres, passe-lhe os sinalizadores apropriados (consulte Personalizando comportamento a usar marcadores). Provavelmente precisará dos seguintes:

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

Define a largura máxima em pixels e, opcionalmente, a quantidade máxima de linhas (a quebra de palavras é aplicada).

font-family:ubuntu

Define o grupo de letras para usar especificando seu identificador.

font-size:22

Define o tamanho da fonte em pixels.

Escrever as próprias verificações

Uma ampla gama de verificações de qualidade são incorporadas, (veja Verificações de qualidade), embora eles possam não cobrir tudo o que deseja verificar. A lista de verificações realizadas pode ser ajustada a usar CHECK_LIST e também pode adicionar verificações personalizadas.

  1. Crie uma subclasse de weblate.checks.Check

  2. Define alguns atributos.

  3. Implemente o método check (se quiser lidar com plurais no seu código) ou o método check_single (que faz isso por si).

Alguns exemplos:

Para instalar verificações personalizadas, forneça um caminho totalmente qualificado à classe Python em CHECK_LIST, veja Custom quality checks, add-ons, automatic suggestions and auto-fixes.

Verificar se o texto de tradução não contém «foo»

Esta é uma verificação bastante simples que apenas verifica se a tradução não possui a cadeia «foo».

"""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

A verificar se os plurais de texto da tradução checa são diferentes

Usa as informações de idioma para verificar se as duas formas plurais no idioma tcheco não são os mesmos.

"""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