Verificações e correções

Correções automáticas personalizadas

Você também pode implementar sua própria correção automática, além das padrão e incluí-las em AUTOFIX_LIST.

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

Por exemplo, a correção automática a seguir iria substituir cada ocorrência do texto foo, em uma tradução com bar:

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#

from django.utils.translation import gettext_lazy as _

from weblate.trans.autofixes.base import AutoFix


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

    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 para a classe Python em AUTOFIX_LIST, veja Verificações de qualidade personalizadas, extensões e correções automáticas.

Personalizando comportamento usando marcadores

Você pode ajustar o comportamento de Weblate (principalmente de verificações) para cada texto fonte (na revisão de textos fontes, veja Informações adicionais sobre textos fonte) ou em Configuração de componente (Marcadores de tradução). Alguns formatos de arquivo também permitem especificar marcadores diretamente no formato (veja Formatos de arquivos suportados).

Os marcadores são separados por vírgulas, os parâmetros são separados por caracteres de dois pontos. Você pode usar aspas para incluir espaços em branco ou caracteres especiais no texto. Por exemplo:

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

Aqui está uma lista de marcadores atualmente aceitos:

rst-text

Trata um texto como um documento reStructuredText, afeta Tradução não alterada.

dos-eol

Usa marcadores de ponta de linha do DOS em vez dos Unix (\r\n em vez de \n).

read-only

A texto é somente leitura e não deve ser editado no Weblate, veja Textos somente leitura.

priority:N

Prioridade do texto. Os textos de maior prioridade são apresentados primeiro para tradução. A prioridade padrão é 100, a maior prioridade que um texto tem, mais cedo é oferecido para tradução.

max-length:N

Limita o comprimento máximo de um texto a caracteres N, veja Comprimento máximo da tradução.

xml-text

Trata o texto como documento XML, afeta Sintaxe XML e Marcação XML.

font-family:NOME

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

font-weight:PESO

Define o peso da fonte para verificações da renderização, veja Gerenciando fontes.

font-size:TAMANHO

Define o tamanho da fonte para verificações da renderização, veja Gerenciando fontes.

font-spacing:ESPAÇAMENTO

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

placeholders:NOME:NOME2:...

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

replacements:DE:PARA:DE2:PARA2...

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

variants:FONTE

Marca este texto como uma variante do texto com o fonte correspondente. Veja Variantes de textos.

regex:EXPRESSÃO REGULAR

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

forbidden

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

strict-same

Faz com que “Tradução não alterada” evite usar a lista negra de palavras embutidas, veja Tradução não alterada.

check-glossary

Enable the Não seguir glossário quality check.

angularjs-format

Enable the Texto de interpolação AngularJS quality check.

c-format

Enable the Formato C quality check.

c-sharp-format

Enable the Formato C# quality check.

es-format

Enable the Literais de modelo de ECMAScript quality check.

i18next-interpolation

Enable the Interpolação de i18next quality check.

java-format

Enable the Formato Java quality check.

java-messageformat

Enable the MessageFormat do Java quality check.

javascript-format

Enable the Formato JavaScript quality check.

lua-format

Enable the Formato Lua quality check.

object-pascal-format

Enable the Formato de Object Pascal quality check.

percent-placeholders

Enable the Espaços reservados de porcentagem quality check.

perl-format

Enable the Formato Perl quality check.

php-format

Enable the Formato PHP quality check.

python-brace-format

Enable the Formato de chaves Python quality check.

python-format

Enable the Formato Python quality check.

qt-format

Enable the Formato Qt quality check.

qt-plural-format

Enable the Formato de plural Qt quality check.

ruby-format

Enable the Formato Ruby quality check.

scheme-format

Enable the Formato Scheme quality check.

vue-format

Enable the Formatação Vue I18n quality check.

md-text

Treat text as a Markdown document. Enable Links Markdown, Referências Markdown, and Sintaxe Markdown quality checks.

safe-html

Enable the HTML inseguro quality check.

url

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

ignore-bbcode

Skip the Marcação de BBcode quality check.

ignore-duplicate

Skip the Há palavras duplicadas de forma consecutiva quality check.

ignore-check-glossary

Skip the Não seguir glossário quality check.

ignore-double-space

Skip the Espaço duplo quality check.

ignore-angularjs-format

Skip the Texto de interpolação AngularJS quality check.

ignore-c-format

Skip the Formato C quality check.

ignore-c-sharp-format

Skip the Formato C# quality check.

ignore-es-format

Skip the Literais de modelo de ECMAScript quality check.

ignore-i18next-interpolation

Skip the Interpolação de i18next quality check.

ignore-java-format

Skip the Formato Java quality check.

ignore-java-messageformat

Skip the MessageFormat do Java quality check.

ignore-javascript-format

Skip the Formato JavaScript quality check.

ignore-lua-format

Skip the Formato Lua quality check.

ignore-object-pascal-format

Skip the Formato de Object Pascal quality check.

ignore-percent-placeholders

Skip the Espaços reservados de porcentagem quality check.

ignore-perl-format

Skip the Formato Perl quality check.

ignore-php-format

Skip the Formato PHP quality check.

ignore-python-brace-format

Skip the Formato de chaves Python quality check.

ignore-python-format

Skip the Formato Python quality check.

ignore-qt-format

Skip the Formato Qt quality check.

ignore-qt-plural-format

Skip the Formato de plural Qt quality check.

ignore-ruby-format

Skip the Formato Ruby quality check.

ignore-scheme-format

Skip the Formato Scheme quality check.

ignore-vue-format

Skip the Formatação Vue I18n quality check.

ignore-translated

Skip the Foi traduzido quality check.

ignore-inconsistent

Skip the Inconsistente quality check.

ignore-kashida

Skip the Letra Kashida usada quality check.

ignore-md-link

Skip the Links Markdown quality check.

ignore-md-reflink

Skip the Referências Markdown quality check.

ignore-md-syntax

Skip the Sintaxe Markdown quality check.

ignore-max-length

Skip the Comprimento máximo da tradução quality check.

ignore-max-size

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

ignore-escaped-newline

Skip the \n não correspondente quality check.

ignore-end-colon

Skip the Caractere de dois pontos não correspondente quality check.

ignore-end-ellipsis

Skip the Reticências não correspondentes quality check.

ignore-end-exclamation

Skip the Ponto de exclamação não correspondente quality check.

ignore-end-stop

Skip the Ponto final não correspondente quality check.

ignore-end-question

Skip the Ponto de interrogação não correspondente quality check.

ignore-end-semicolon

Skip the Ponto e vírgula não correspondente quality check.

ignore-newline-count

Skip the Quebras de linha descasadas quality check.

ignore-plurals

Skip the Faltam plurais quality check.

ignore-placeholders

Skip the Espaços reservados quality check.

ignore-punctuation-spacing

Skip the Espaçamento de pontuação quality check.

ignore-regex

Skip the Expressão regular quality check.

ignore-same-plurals

Skip the Mesmos plurais quality check.

ignore-begin-newline

Skip the Nova linha no início quality check.

ignore-begin-space

Skip the Espaços no início quality check.

ignore-end-newline

Skip the Linha em branco no final quality check.

ignore-end-space

Skip the Espaço no final quality check.

ignore-same

Skip the Tradução não alterada quality check.

ignore-safe-html

Skip the HTML inseguro quality check.

ignore-url

Skip the URL quality check.

ignore-xml-tags

Skip the Marcação XML quality check.

ignore-xml-invalid

Skip the Sintaxe XML quality check.

ignore-zero-width-space

Skip the Espaço com largura zero quality check.

ignore-ellipsis

Skip the Reticências quality check.

ignore-long-untranslated

Skip the Não traduzido a muito tempo quality check.

ignore-multiple-failures

Skip the Várias verificações com falha quality check.

ignore-unnamed-format

Skip the Várias variáveis sem nome quality check.

ignore-optional-plural

Skip the Não pluralizado quality check.

Nota

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

Esses marcadores são entendidos tanto nas configurações de Configuração de componente, por configurações de textos fonte quanto no próprio arquivo de tradução (por exemplo, no GNU gettext).

Forçando verificações

Novo na versão 3.11.

Você pode configurar uma lista de verificações que não podem ser ignoradas definindo Verificações forçadas em Configuração de componente. Cada verificação listada não pode ser ignorada na interface do usuário e qualquer texto com falha nesta verificação é marcado como Precisa de edição (veja Estados de tradução).

Gerenciando fontes

Novo na versão 3.7.

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 usuário do Weblate.

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

Ferramenta de gerenciamento de fontes do Weblate em Fonts sob o menu Gerenciar do seu projeto de tradução fornece interface para carregar e gerenciar fontes. As fontes TrueType ou OpenType podem ser carregadas, configurar grupos de fontes e usá-los na verificação.

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

../_images/font-group-edit.png

O grupos de fontes 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.png

A família de fontes e o estilo são automaticamente reconhecidos após carregá-los:

../_images/font-edit.png

Você pode ter um número de fontes carregadas para Weblate:

../_images/font-list.png

Para usar as fontes para verificar o comprimento do texto, passe-o os marcadores apropriados (veja Personalizando comportamento usando marcadores). Você provavelmente precisará dos seguintes:

max-size:500

Define o máximo de largura.

font-family:ubuntu

Define o grupo de fontes para usar especificando seu identificador.

font-size:22

Define o tamanho da fonte.

Escrevendo as próprias verificações

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

  1. Crie uma subclasse de weblate.checks.Check

  2. Defina alguns atributos.

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

Alguns exemplos:

Para instalar verificações personalizadas, forneça um caminho totalmente qualificado para a classe Python em CHECK_LIST, veja Verificações de qualidade personalizadas, extensões e correções automáticas.

Verificando 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 o texto “foo”.

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
"""Simple quality check example."""

from django.utils.translation import gettext_lazy as _

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 = _("Foo check")

    # Description for failing check
    description = _("Your translation is foo")

    # Real check code
    def check_single(self, source, target, unit):
        return "foo" in target

Verificando se os plurais de texto de tradução tcheca 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.

#
# Copyright © 2012 - 2021 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <https://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
"""Quality check example for Czech plurals."""

from django.utils.translation import gettext_lazy as _

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 = _("Foo check")

    # Description for failing check
    description = _("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