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 © 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 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#
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 Informações adicionais sobre textos fonte), or in the Configuração de componente (Marcadores de tradução). Some file formats also allow to specify flags directly in the format (see Formatos de arquivos suportados).
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:.*
Aspas simples e duplas são aceitas, e caracteres especiais são tratados com 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).
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
O texto é somente leitura e não deve ser editado no Weblate, veja Textos somente leitura.
terminology
Used in Glossário. 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: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.
icu-flags:MARCADORES
Define marcadores para personalizar o comportamento da verificação de qualidade MessageFormat do ICU.
icu-tag-prefix:PREFIXO
Define um prefixo necessário para tags XML para a verificação de qualidade MessageFormat do ICU.
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
Habilita a verificação de qualidade Não segue o glossário.
angularjs-format
Habilita a verificação de qualidade Texto de interpolação AngularJS.
c-format
Habilita a verificação de qualidade Formato C.
c-sharp-format
Habilita a verificação de qualidade Formato C#.
es-format
Habilita a verificação de qualidade Literais de modelo de ECMAScript.
i18next-interpolation
Habilita a verificação de qualidade Interpolação de i18next.
icu-message-format
Habilita a verificação de qualidade MessageFormat do ICU.
java-printf-format
Habilita a verificação de qualidade Formato Java.
java-format
Habilita a verificação de qualidade MessageFormat do Java.
javascript-format
Habilita a verificação de qualidade Formato JavaScript.
lua-format
Habilita a verificação de qualidade Formato Lua.
object-pascal-format
Habilita a verificação de qualidade Formato de Object Pascal.
percent-placeholders
Habilita a verificação de qualidade Espaços reservados de porcentagem.
perl-format
Habilita a verificação de qualidade Formato Perl.
php-format
Habilita a verificação de qualidade Formato PHP.
python-brace-format
Habilita a verificação de qualidade Formato de chaves Python.
python-format
Habilita a verificação de qualidade Formato Python.
qt-format
Habilita a verificação de qualidade Formato Qt.
qt-plural-format
Habilita a verificação de qualidade Formato de plural Qt.
ruby-format
Habilita a verificação de qualidade Formato Ruby.
scheme-format
Habilita a verificação de qualidade Formato Scheme.
vue-format
Habilita a verificação de qualidade Formatação Vue I18n.
md-text
Treat text as a Markdown document, and provide Markdown syntax highlighting on the translation text area. Enables Links Markdown, Referências Markdown, and Sintaxe Markdown quality checks.
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.
safe-html
Habilita a verificação de qualidade HTML inseguro.
url
O texto deve consistir apenas em uma URL. Habilita a verificação de qualidade URL.
ignore-all-checks
Ignora todas as verificações de qualidade.
ignore-bbcode
Ignora a verificação de qualidade Marcação de BBCode.
ignore-duplicate
Ignora a verificação de qualidade Há palavras duplicadas de forma consecutiva.
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-angularjs-format
Ignora a verificação de qualidade Texto de interpolação AngularJS.
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 MessageFormat do Java.
ignore-javascript-format
Ignora a verificação de qualidade Formato JavaScript.
ignore-lua-format
Ignora a verificação de qualidade Formato Lua.
ignore-object-pascal-format
Ignora a verificação de qualidade Formato de Object Pascal.
ignore-percent-placeholders
Ignora a verificação de qualidade Espaços reservados de porcentagem.
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 chaves 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 Formato de 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-kashida
Ignora a verificação de qualidade Letra Kashida usada.
ignore-md-link
Ignora a verificação de qualidade Links Markdown.
ignore-md-reflink
Ignora a verificação de qualidade Referências Markdown.
ignore-md-syntax
Ignora a verificação de qualidade Sintaxe Markdown.
ignore-max-length
Ignora a verificação de qualidade Comprimento 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 Caractere de dois pontos não correspondente.
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-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 descasadas.
ignore-plurals
Ignora a verificação de qualidade Faltam plurais.
ignore-placeholders
Ignora a verificação de qualidade Espaços reservados.
ignore-punctuation-spacing
Ignora a verificação de qualidade Espaçamento de pontuação.
ignore-regex
Ignora a verificação de qualidade Expressão regular.
ignore-reused
Skip the Reused translation quality check.
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 Linha em branco 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 não alterada.
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 Marcação XML.
ignore-xml-invalid
Ignora a verificação de qualidade Sintaxe XML.
ignore-zero-width-space
Ignora a verificação de qualidade Espaço com largura zero.
ignore-ellipsis
Ignora a verificação de qualidade Reticências.
ignore-icu-message-format-syntax
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 com falha.
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, 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 dispensado na interface do usuário e qualquer texto com falha nesta verificação é marcado como Precisa de edição (veja Estados de tradução).
Nota
Ativar a imposição de verificação não a ativa automaticamente. A verificação pode ser ativada adicionando o marcador correspondente aos marcadores de terxto ou componente.
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 marcador de tradução (veja 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:
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:
A família de fontes e o estilo são automaticamente reconhecidos após carregá-los:
Você pode ter um número de fontes carregadas para Weblate:
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 em pixels.
font-family:ubuntu
Define o grupo de fontes para usar especificando seu identificador.
font-size:22
Define o tamanho da fonte em pixels.
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.
Crie uma subclasse de weblate.checks.Check
Defina alguns atributos.
Implemente o método
check
(se você quiser lidar com plurais em seu código) ou o métodocheck_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 © 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
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 © 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