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:

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

Customizing behavior using flags

Pode ajustar o comportamento de Weblate (principalmente de verificações) para cada cadeia fonte (na revisão de cadeias fonte, veja Additional info on source strings) ou em Component configuration (Marcadores de tradução). Alguns formatos de ficheiro também permitem especificar sinalizadores diretamente no formato (veja Formatos de ficheiros suportados).

As etiquetas são separadas por vírgulas, os parâmetros são separados por caracteres de dois pontos. Pode usar aspas para incluir espaços em branco ou caracteres especiais na cadeia. Por exemplo:

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

Aqui está uma lista de sinalizadores atualmente aceitos:

rst-text

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

md-text

Trata o texto como um documento de Markdown.

dos-eol

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

url

A cadeia deve consistir apenas numa URL.

safe-html

A cadeia deve fazer seguro para HTML, veja HTML inseguro.

read-only

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

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:NOME

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

font-weight:PESO

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:ESPAÇAMENTO

Define letter spacing for rendering checks, see Gerir letras.

placeholders:NAME:NAME2:...

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

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

Replacements to perform when checking resulting text parameters (for example in Tamanho máximo da tradução or Tamanho máximo da tradução). The typical use case for this is to expand placeables to ensure that the text fits even with long values, for example: replacements:%s:"John Doe".

variants:SOURCE

Mark this string as a variant of string with matching source. See String variants.

regex:EXPRESSÃO REGULAR

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

forbidden

Indicates forbidden translation in a glossary, see Forbidden translations.

python-format, c-format, php-format, python-brace-format, javascript-format, c-sharp-format, java-format, java-messageformat, lua-format, auto-java-messageformat, qt-format, qt-plural-format, ruby-format, vue-format

Treats all strings like format strings, affects Cadeias formatadas, Cadeias formatadas, Cadeias formatadas, Cadeias formatadas, Cadeias formatadas, Cadeias formatadas, Cadeias formatadas, Cadeias formatadas, Cadeias formatadas, Cadeias formatadas, Cadeias formatadas, Cadeias formatadas, Cadeias formatadas, Tradução inalterada.

strict-same

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

check-glossary

Enable the «Does not follow glossary» quality check.

ignore-bbcode

Pular a verificação de qualidade «Markup de BBcode».

ignore-duplicate

Pular a verificação de qualidade «Palavras consecutivas duplicadas».

ignore-check-glossary

Skip the «Does not follow glossary» quality check.

ignore-double-space

Pular a verificação de qualidade «Espaço duplo».

ignore-angularjs-format

Pular a verificação de qualidade «Cadeia de interpolação AngularJS».

ignore-c-format

Pular a verificação de qualidade «Formato C».

ignore-c-sharp-format

Pular a verificação de qualidade «Formato C#».

ignore-es-format

Pular a verificação de qualidade «Literais de modelo de ECMAScript».

ignore-i18next-interpolation

Pular a verificação de qualidade «Interpolação de i18next».

ignore-java-format

Pular a verificação de qualidade «Formato Java».

ignore-java-messageformat

Pular a verificação de qualidade «MessageFormat do Java».

ignore-javascript-format

Pular a verificação de qualidade «Formato JavaScript».

ignore-lua-format

Skip the «Lua format» quality check.

ignore-percent-placeholders

Pular a verificação de qualidade «Espaços reservados de percentagem».

ignore-perl-format

Pular a verificação de qualidade «Formato Perl».

ignore-php-format

Pular a verificação de qualidade «Formato PHP».

ignore-python-brace-format

Pular a verificação de qualidade «Formato de chaves Python».

ignore-python-format

Pular a verificação de qualidade «Formato Python».

ignore-qt-format

Pular a verificação de qualidade «Formato Qt».

ignore-qt-plural-format

Pular a verificação de qualidade «Formato de plural Qt».

ignore-ruby-format

Pular a verificação de qualidade «Formato Ruby».

ignore-vue-format

Pular a verificação de qualidade «Formatação Vue I18n».

ignore-translated

Pular a verificação de qualidade «Foi traduzido».

ignore-inconsistent

Pular a verificação de qualidade «Inconsistente».

ignore-kashida

Pular a verificação de qualidade «Letra Kashida usada».

ignore-md-link

Pular a verificação de qualidade «Links Markdown».

ignore-md-reflink

Pular a verificação de qualidade «Referências Markdown».

ignore-md-syntax

Pular a verificação de qualidade «Sintaxe Markdown».

ignore-max-length

Pular a verificação de qualidade «Comprimento máximo da tradução».

ignore-max-size

Pular 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 «Caractere de dois pontos não correspondente».

ignore-end-ellipsis

Pular a verificação de qualidade «Reticências não correspondentes».

ignore-end-exclamation

Pular a verificação de qualidade «Ponto de exclamação não correspondente».

ignore-end-stop

Pular a verificação de qualidade «Ponto final não correspondente».

ignore-end-question

Pular a verificação de qualidade «Ponto de interrogação não correspondente».

ignore-end-semicolon

Pular a verificação de qualidade «Ponto e vírgula não correspondente».

ignore-newline-count

Pular a verificação de qualidade «Quebras de linha não correspondentes».

ignore-plurals

Pular a verificação de qualidade «Faltam plurais».

ignore-placeholders

Pular a verificação de qualidade «Espaços reservados».

ignore-punctuation-spacing

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

ignore-regex

Pular a verificação de qualidade «Expressão regular».

ignore-same-plurals

Pular a verificação de qualidade «Mesmos plurais».

ignore-begin-newline

Pula a verificação de qualidade «Nova linha no início».

ignore-begin-space

Pular a verificação de qualidade «Espaços no início».

ignore-end-newline

Pular a verificação de qualidade «Nova linha no final».

ignore-end-space

Pular a verificação de qualidade «Espaço no final».

ignore-same

Ignora a verificação de qualidade «Tradução não alterada».

ignore-safe-html

Pular a verificação de qualidade «HTML inseguro».

ignore-url

Pular a verificação de qualidade «URL».

ignore-xml-tags

Pular a verificação de qualidade «Marcação XML».

ignore-xml-invalid

Pular a verificação de qualidade «Sintaxe XML».

ignore-zero-width-space

Pular a verificação de qualidade «Espaço com largura zero».

ignore-ellipsis

Pular a verificação de qualidade «Reticências».

ignore-long-untranslated

Pular a verificação de qualidade «Não traduzido a muito tempo».

ignore-multiple-failures

Pular a verificação de qualidade «Várias verificações com falha».

ignore-unnamed-format

Pular a verificação de qualidade «Várias variáveis sem nome».

ignore-optional-plural

Pular a verificação de qualidade «Não pluralizado».

Nota

Geralmente, a regra é chamada ignore-* para qualquer verificação, a usar o identificador dele, para que possa usá-la mesmo para as suas verificações personalizadas.

Essas etiquetas são entendidas tanto nas configurações de Component configuration, por configurações de cadeias fonte quanto no próprio ficheiro de tradução (por exemplo, no GNU gettext).

Forçar verificações

Novo na versão 3.11.

Pode configurar uma lista de verificações que não podem ser ignoradas a definir Verificações impostas em Component configuration. Cada verificação listada não pode ser ignorada na interface do utilizador e qualquer cadeia com falha nesta verificação é marcada como Precisa de edição (veja Translation states).

Gerir letras

Novo na versão 3.7.

Dica

Fonts uploaded into Weblate are used purely for purposes of the Tamanho máximo da tradução check, they do not have an effect in Weblate user interface.

The Tamanho máximo da tradução check used to calculate dimensions of the rendered text needs font to be loaded into Weblate and selected using a translation flag (see Customizing behavior using flags).

Weblate font management tool in Fonts under the Manage 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.png

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

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

../_images/font-edit.png

Pode ter muitas letras carregadas para Weblate:

../_images/font-list.png

Para usar as letras para verificar o comprimento da cadeia, passe-a os sinalizadores apropriados (veja Customizing behavior using flags). Provavelmente precisará dos seguintes:

max-size:500

Define o máximo de largura.

font-family:ubuntu

Define o grupo de letras para usar especificando seu identificador.

font-size:22

Define o tamanho da letra.

Escrever 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 Verificações de qualidade personalizadas, extensões e correções automáticas.

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

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