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:
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 para a classe Python em AUTOFIX_LIST, consulte Custom quality checks, add-ons, automatic suggestions and auto-fixes.
Personalizando comportamento usando marcadores¶
Você pode ajustar o comportamento do Weblate usando marcadores. Os marcadores fornecem feedback visual aos tradutores e os ajudam a melhorar sua tradução. Os marcadores são mesclados a partir das seguintes fontes:
Marcadores adicionais do texto fonte:
Informações adicionais sobre textos fonte descreve a edição manual.
Editor em massa pode ser usado para aplicar marcadores em lote.
O complemento Editor em massa pode aplicar marcadores automaticamente.
Marcadores por texto extraídos do formato do arquivo, consulte Formatos de arquivo de localização.
Translation flags (currently only
read-onlyflag for bilingual source string or when monolingual template editing is turned off).Marcadores específicos do formato de arquivo.
Os marcadores são separados por vírgulas; se tiverem parâmetros, eles são separados por 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:.*
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 o texto ### Index for traduzido como # Indice.
placeholders:r"\]\([^h].*?\)"
Para garantir que os links internos não estão sendo traduzidos (ou seja, [test](../checks) não se torna [test](../chequeos)).
Marcadores definidos em um nível mais alto podem ser descartados com a sintaxe discard:NAME. Por exemplo, se um componente estiver configurado como safe-html, você poderá adicionar discard:safe-html aos marcadores de texto para ignorá-lo esse texto especifico.
Aqui está uma lista de marcadores atualmente aceitos:
read-onlyO texto é somente leitura e não deve ser editado no Weblate, consulte Textos somente leitura.
terminologyUsado em Glossário. Copia o texto em todos os idiomas do Glossário para que possa ser usado de forma consistente em todas as traduções. Também útil em combinação com
read-only, por exemplo em nomes de produtos.priority:NPrioridade 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:NLimita o comprimento máximo de um texto a caracteres N, consulte Comprimento máximo da tradução.
xml-textTrata o texto como documento XML, afeta Sintaxe XML e Marcação XML.
font-family:NAMEDefine a família de fontes para verificações da renderização, consulte Gerenciando fontes.
font-weight:WEIGHTDefine o peso da fonte para verificações da renderização, consulte Gerenciando fontes.
font-size:SIZEDefine o tamanho da fonte para verificações da renderização, consulte Gerenciando fontes.
font-spacing:SPACINGDefine o espaçamento de letras para verificações da renderização, consulte Gerenciando fontes.
icu-flags:FLAGSDefine marcadores para personalizar o comportamento da verificação de qualidade MessageFormat do ICU.
icu-tag-prefix:PREFIXDefine um prefixo necessário para tags XML para a verificação de qualidade MessageFormat do ICU.
placeholders:NAME:NAME2:...Textos de espaço reservado esperados na tradução, consulte 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 Comprimento 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:SOURCEMarca este texto como uma variante do texto com o fonte correspondente. Consulte Variantes de textos.
regex:REGEXExpressão regular para corresponder à tradução; consulte Expressão regular.
discard:NAMEDescarta o marcador definido em um nível superior.
forbiddenIndica tradução proibida em um glossário, consulte Traduções proibidas.
strict-sameFaz Tradução não alterada evitar o uso de exceções de palavras embutidas.
strict-formatFaça com que as verificações de formato imponham o uso do formato mesmo para formas de plural com um único valor, consulte Textos formatados.
case-insensitiveAjustar 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-textTreat a text as an Bulletin Board Code (BBCode) document, affects Tradução não alterada. Enables the Marcação de BBCode quality check.
check-glossaryEnables the Não segue o glossário quality check.
fluent-partsEnables the Partes Fluent quality check.
fluent-referencesEnables the Referências Fluent quality check.
fluent-target-inner-htmlEnables the Tradução Fluent HTML interno quality check.
fluent-target-syntaxEnables the Sintaxe de tradução Fluent quality check.
angularjs-formatEnables the Texto de interpolação AngularJS quality check.
automattic-components-formatEnables the Formatação dos componentes da Automattic quality check.
c-formatEnables the Formato C quality check.
c-sharp-formatEnables the Formato C# quality check.
csharp-formatEnables the Formato C# quality check.
es-formatEnables the Literais de modelo de ECMAScript quality check.
i18next-interpolationEnables the Interpolação de i18next quality check.
icu-message-formatEnables the MessageFormat do ICU and Sintaxe de MessageFormat do ICU quality checks.
java-printf-formatEnables the Formato Java quality check.
java-formatEnables the MessageFormat do Java quality check.
auto-java-messageformatTreat a text as conditional Java MessageFormat, enabling MessageFormat do Java only when the source contains Java MessageFormat placeholders. Enables the MessageFormat do Java quality check.
javascript-formatEnables the Formato JavaScript quality check.
laravel-formatEnables the Formato Laravel quality check.
lua-formatEnables the Formato Lua quality check.
object-pascal-formatEnables the Formato de Object Pascal quality check.
objc-formatEnables the Formato de Objective-C quality check.
percent-placeholdersEnables the Espaços reservados de porcentagem quality check.
perl-brace-formatEnables the Formato de chave Perl quality check.
perl-formatEnables the Formato Perl quality check.
php-formatEnables the Formato PHP quality check.
python-brace-formatEnables the Formato de chaves Python quality check.
python-formatEnables the Formato Python quality check.
qt-formatEnables the Formato Qt quality check.
qt-plural-formatEnables the Formato de plural Qt quality check.
ruby-formatEnables the Formato Ruby quality check.
scheme-formatEnables the Formato Scheme quality check.
vue-formatEnables the Formatação Vue I18n quality check.
rst-textTreat a text as an reStructuredText document, affects Tradução não alterada. Enables the reStructuredText inconsistente and Erro de sintaxe reStructuredText quality checks.
md-textTreat a text as a Markdown document, and provide Markdown syntax highlighting on the translation text area. Enables the Links Markdown, Referências Markdown and Sintaxe Markdown quality checks.
max-lengthEnables the Comprimento máximo da tradução quality check.
max-sizeEnables the Tamanho máximo da tradução quality check.
placeholdersEnables the Espaços reservados quality check.
regexEnables the Expressão regular quality check.
safe-htmlEnables the HTML inseguro quality check.
auto-safe-htmlTreat 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.
urlThe string should consist of only a URL. Enables the URL quality check.
fluent-source-inner-htmlEnables the HTML interno de fonte Fluent quality check.
fluent-source-syntaxEnables the Sintaxe de origem Fluent quality check.
ignore-all-checksIgnora todas as verificações de qualidade.
ignore-bbcodeIgnora a verificação de qualidade Marcação de BBCode.
ignore-xml-chars-around-tagsSkip the Caracteres em torno das tags XML quality check.
ignore-duplicateIgnora a verificação de qualidade Há palavras duplicadas de forma consecutiva.
ignore-check-glossaryIgnora a verificação de qualidade Não segue o glossário.
ignore-double-spaceIgnora a verificação de qualidade Espaço duplo.
ignore-fluent-partsIgnora a verificação de qualidade Partes Fluent.
ignore-fluent-referencesIgnora a verificação de qualidade Referências Fluent.
ignore-fluent-target-inner-htmlIgnora a verificação de qualidade Tradução Fluent HTML interno.
ignore-fluent-target-syntaxIgnora a verificação de qualidade Sintaxe de tradução Fluent.
ignore-angularjs-formatIgnora a verificação de qualidade Texto de interpolação AngularJS.
ignore-automattic-components-formatIgnora a verificação de qualidade Formatação dos componentes da Automattic.
ignore-c-formatIgnora a verificação de qualidade Formato C.
ignore-c-sharp-formatIgnora a verificação de qualidade Formato C#.
ignore-es-formatIgnora a verificação de qualidade Literais de modelo de ECMAScript.
ignore-i18next-interpolationIgnora a verificação de qualidade Interpolação de i18next.
ignore-icu-message-formatIgnora a verificação de qualidade MessageFormat do ICU.
ignore-java-printf-formatIgnorar a verificação de qualidade Formato Java.
ignore-java-formatIgnora a verificação de qualidade MessageFormat do Java.
ignore-javascript-formatIgnora a verificação de qualidade Formato JavaScript.
ignore-laravel-formatSkip the Formato Laravel quality check.
ignore-lua-formatIgnora a verificação de qualidade Formato Lua.
ignore-object-pascal-formatIgnora a verificação de qualidade Formato de Object Pascal.
ignore-objc-formatSkip the Formato de Objective-C quality check.
ignore-percent-placeholdersIgnora a verificação de qualidade Espaços reservados de porcentagem.
ignore-perl-brace-formatIgnora a verificação de qualidade Formato de chave Perl.
ignore-perl-formatIgnora a verificação de qualidade Formato Perl.
ignore-php-formatIgnora a verificação de qualidade Formato PHP.
ignore-python-brace-formatIgnora a verificação de qualidade Formato de chaves Python.
ignore-python-formatIgnora a verificação de qualidade Formato Python.
ignore-qt-formatIgnora a verificação de qualidade Formato Qt.
ignore-qt-plural-formatIgnora a verificação de qualidade Formato de plural Qt.
ignore-ruby-formatIgnora a verificação de qualidade Formato Ruby.
ignore-scheme-formatIgnora a verificação de qualidade Formato Scheme.
ignore-vue-formatIgnora a verificação de qualidade Formatação Vue I18n.
ignore-translatedIgnora a verificação de qualidade Foi traduzido.
ignore-inconsistentIgnora a verificação de qualidade Inconsistente.
ignore-rst-referencesIgnora a verificação de qualidade reStructuredText inconsistente.
ignore-kashidaIgnora a verificação de qualidade Letra Kashida usada.
ignore-md-linkIgnora a verificação de qualidade Links Markdown.
ignore-md-reflinkIgnora a verificação de qualidade Referências Markdown.
ignore-md-syntaxIgnora a verificação de qualidade Sintaxe Markdown.
ignore-max-lengthIgnora a verificação de qualidade Comprimento máximo da tradução.
ignore-max-sizeIgnora a verificação de qualidade Tamanho máximo da tradução.
ignore-escaped-newlineIgnora a verificação de qualidade \n não correspondente.
ignore-end-colonIgnora a verificação de qualidade Caractere de dois pontos não correspondente.
ignore-end-ellipsisIgnora a verificação de qualidade Reticências não correspondentes.
ignore-end-exclamationIgnora a verificação de qualidade Ponto de exclamação não correspondente.
ignore-end-stopIgnora a verificação de qualidade Ponto final não correspondente.
ignore-end-interrobangIgnora a verificação de qualidade Interrobangue incompatível.
ignore-end-questionIgnora a verificação de qualidade Ponto de interrogação não correspondente.
ignore-end-semicolonIgnora a verificação de qualidade Ponto e vírgula não correspondente.
ignore-newline-countIgnora a verificação de qualidade Quebras de linha descasadas.
ignore-pluralsIgnora a verificação de qualidade Faltam plurais.
ignore-multiple-capitalSkip the Várias palavras maiúsculas quality check.
ignore-kabyle-charactersIgnora a verificação de qualidade Caracteres não padronizados em Kabyle.
ignore-placeholdersIgnora a verificação de qualidade Espaços reservados.
ignore-prohibited-initial-characterIgnora a verificação de qualidade Caractere inicial proibido.
ignore-punctuation-spacingIgnora a verificação de qualidade Espaçamento de pontuação.
ignore-regexIgnora a verificação de qualidade Expressão regular.
ignore-rst-syntaxIgnora a verificação de qualidade Erro de sintaxe reStructuredText.
ignore-reusedIgnora a verificação de qualidade Tradução reutilizada.
ignore-same-pluralsIgnora a verificação de qualidade Mesmos plurais.
ignore-begin-newlineIgnora a verificação de qualidade Nova linha no início.
ignore-begin-spaceIgnora a verificação de qualidade Espaços no início.
ignore-end-newlineIgnora a verificação de qualidade Linha em branco no final.
ignore-end-spaceIgnora a verificação de qualidade Espaço no final.
ignore-sameIgnora a verificação de qualidade Tradução não alterada.
ignore-safe-htmlIgnora a verificação de qualidade HTML inseguro.
ignore-urlIgnora a verificação de qualidade URL.
ignore-xml-tagsIgnora a verificação de qualidade Marcação XML.
ignore-xml-invalidIgnora a verificação de qualidade Sintaxe XML.
ignore-zero-width-spaceIgnora a verificação de qualidade Espaço com largura zero.
ignore-ellipsisIgnora a verificação de qualidade Reticências.
ignore-fluent-source-inner-htmlIgnora a verificação de qualidade HTML interno de fonte Fluent.
ignore-fluent-source-syntaxIgnora a verificação de qualidade Sintaxe de origem Fluent.
ignore-icu-message-formatIgnora a verificação de qualidade Sintaxe de MessageFormat do ICU.
ignore-long-untranslatedIgnora a verificação de qualidade Não traduzido há muito tempo.
ignore-multiple-failuresIgnora a verificação de qualidade Várias verificações com falha.
ignore-unnamed-formatIgnora a verificação de qualidade Várias variáveis sem nome.
ignore-optional-pluralIgnora 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).
Location-based flags¶
Alguns marcadores são adicionados aos textos por padrão, com base em seus locais. Isso significa que determinadas verificações serão automaticamente habilitadas, dependendo de onde o texto for usado.
rst-text: Esse marcador é adicionado automaticamente aos textos nos arquivos 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çando verificações¶
The enforced checks cannot be dismissed and mark string as Needs editing (see Status 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 Textos formatados. Using for style checks like Tradução não alterada 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.
Gerenciando fontes¶
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 (consulte Personalizando comportamento usando 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 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:
Font-family and style are automatically recognized after uploading them:
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 (consulte Personalizando comportamento usando marcadores). Você provavelmente precisará dos seguintes:
max-size:500/max-size:300:5Define a largura máxima em pixels e, opcionalmente, o número máximo de linhas (a quebra de palavras é aplicada).
font-family:ubuntuDefine o grupo de fontes para usar especificando seu identificador.
font-size:22Define o tamanho da fonte em pixels.
Escrevendo as próprias verificações¶
Uma ampla gama de verificações de qualidade estão embutidas, (consulte 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, consulte Custom quality checks, add-ons, automatic suggestions and auto-fixes.
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”.
"""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
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.
"""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