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 Verificações de qualidade personalizadas, sugestões automáticas, extensões e correções automáticas.
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:
Marcadores adicionais da cadeia fonte:
Informações adicionais sobre cadeias fonte descreve a edição manual.
Edição em massa pode ser usado para aplicar marcadores em lote.
O complemento Edição em massa pode aplicar marcadores automaticamente.
Marcadores por cadeia extraídos do formato do ficheiro, consulte Formatos de ficheiro de localização.
Marcadores de tradução (atualmente apenas o marcador
read-onlypara a cadeia de carateres fonte bilíngue ou quando a edição de modelo monolingue está desativada).Marcadores específicos do formato de ficheiro.
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-onlyA cadeia é apenas para leitura e não deve ser editada no Weblate, veja Cadeias apenas de leitura.
terminologyUsado 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:NPrioridade 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:NLimita o comprimento máximo de uma cadeia a N caracteres, veja Tamanho máximo da tradução.
xml-textTrata o texto como documento XML, afeta Sintaxe XML e Markup XML.
font-family:NAMEDefine a família de letras para verificações da renderização, veja Gerir letras.
font-weight:WEIGHTDefine o peso da letra para verificações da renderização, veja Gerir letras.
font-size:SIZEDefine o tamanho da letra para verificações da renderização, veja Gerir letras.
font-spacing:SPACINGDefine o espaçamento de letras para verificações da renderização, veja Gerir letras.
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 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:SOURCEMarque esta cadeia de carateres como uma variante de cadeia de carateres com a fonte correspondente. Consulte Variantes de cadeias.
regex:REGEXExpressão regular para corresponder à tradução; veja Expressão regular.
discard:NAMEDescarta o marcador definido num nível superior.
forbiddenIndica tradução proibida num glossário, veja Traduções proibidas.
strict-sameFaz Tradução inalterada 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 Cadeias formatadas.
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.
acceleratorEspecifique o marcador de aceleração de pontuação individual, por exemplo
accelerator:&,accelerator:_, ouaccelerator:~. Ative a verificação de qualidade Chave aceleradora.asciidoc-textTrata um texto como um documento AsciiDoc, afeta Tradução inalterada. Ativa a verificação de qualidade Marcação AsciiDoc.
bbcode-textTrata um texto como um documento Bulletin Board Code (BBCode), afeta Tradução inalterada. Ativa a verificação de qualidade Markup BBCode.
check-glossaryAtiva a verificação de qualidade Não segue o glossário.
fluent-partsAtiva verificação de qualidade Partes Fluent.
fluent-referencesAtiva a verificação de qualidade Referências Fluent.
fluent-target-inner-htmlAtiva a verificação de qualidade Tradução Fluent HTML interno.
fluent-target-syntaxAtiva a verificação de qualidade Sintaxe de tradução Fluent.
angularjs-formatAtiva a verificação de qualidade Cadeia de interpolação AngularJS.
automattic-components-formatAtiva a verificação de qualidade Formatação de componentes do Automattic.
c-formatAtiva a verificação de qualidade Formato C.
c-sharp-formatAtiva a verificação de qualidade Formato C#.
csharp-formatAtiva a verificação de qualidade Formato C#.
es-formatAtiva a verificação de qualidade Literais de modelo de ECMAScript.
i18next-interpolationAtiva a verificação de qualidade Interpolação de i18next.
icu-message-formatAtiva a verificação de qualidade MessageFormat do ICU e Sintaxe de MessageFormat do ICU.
java-printf-formatAtiva a verificação de qualidade Formato Java.
java-formatAtiva a verificação de qualidade Formato de Mensagem Java.
auto-java-messageformatTrata o texto enquanto Java MessageFormat condicional, ativando Formato de Mensagem Java apenas quando a fonte contém marcadores de lugar Java MessageFormat. Ativa a verificação de qualidade Formato de Mensagem Java.
javascript-formatAtiva a verificação de qualidade Formato JavaScript.
laravel-formatAtiva a verificação de qualidade Formato Laravel.
lua-formatAtiva a verificação de qualidade Formato Lua.
object-pascal-formatAtiva a verificação de qualidade Formato Object Pascal.
objc-formatAtive a verificação de qualidade Formato de Objective-C.
percent-placeholdersAtiva a verificação de qualidade Espaços reservados de percentagem.
perl-brace-formatAtiva a verificação de qualidade Formato de chave Perl.
perl-formatAtiva a verificação de qualidade Formato Perl.
php-formatAtiva a verificação de qualidade Formato PHP.
python-brace-formatAtiva a verificação de qualidade Formato de chaveta Python.
python-formatAtiva a verificação de qualidade Formato Python.
qt-formatAtiva a verificação de qualidade Formato Qt.
qt-plural-formatAtiva a verificação de qualidade Forma plural Qt.
ruby-formatAtiva a verificação de qualidade Formato Ruby.
scheme-formatAtiva a verificação de qualidade Formato Scheme.
vue-formatAtiva a verificação de qualidade Formatação vue I18n.
rst-textTrata um texto como um documento reStructuredText, afeta Tradução inalterada. Ativa as verificações de qualidade reStructuredText inconsistente e Erro de sintaxe reStructuredText.
md-textTrata um texto como um documento Markdown e fornece destaque de sintaxe Markdown na área de texto da tradução. Ativa as verificações de qualidade Hiperligações de marcação, Referências de Markdown e Sintaxe de Markdown.
max-lengthAtiva a verificação de qualidade Tamanho máximo da tradução.
max-linesAtiva a verificação de qualidade Número máximo de linhas.
max-sizeAtiva a verificação de qualidade Tamanho máximo da tradução.
placeholdersAtiva a verificação de qualidade Espaços reservados.
regexAtiva a verificação de qualidade Expressão regular.
safe-mdxAtiva a verificação de qualidade MDX Seguro.
safe-htmlAtiva a verificação de qualidade HTML inseguro.
auto-safe-htmlTratar o texto enquanto HTML condicional, ativado HTML inseguro apenas para texto simples ou cadeias de carateres fonte que contêm markup HTML padrão ou elementos personalizados válidos. Isto é útil para variantes de Markdown tais como MDX, onde sintaxe de colchete pode não ser HTML. Ativa a verificação de qualidade HTML inseguro.
urlA cadeia deve consistir apenas numa URL. Ativa a verificação de qualidade URL.
fluent-source-inner-htmlAtiva a verificação de qualidade HTML interno de fonte Fluent.
fluent-source-syntaxAtiva a verificação de qualidade Sintaxe de origem Fluent.
ignore-all-checksIgnora todas as verificações de qualidade.
ignore-acceleratorIgnora a verificação de qualidade Chave aceleradora.
ignore-asciidoc-markupIgnora a verificação de qualidade Marcação AsciiDoc.
ignore-bbcodeIgnora a verificação de qualidade Markup BBCode.
ignore-xml-chars-around-tagsIgnora a verificação de qualidade Carateres em torno das etiquetas XML.
ignore-duplicateIgnora a verificação de qualidade Palavras consecutivas duplicadas.
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 Cadeia de interpolação AngularJS.
ignore-automattic-components-formatIgnora a verificação de qualidade Formatação de componentes do 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 Formato de Mensagem Java.
ignore-javascript-formatIgnora a verificação de qualidade Formato JavaScript.
ignore-laravel-formatIgnora a verificação de qualidade Formato Laravel.
ignore-lua-formatIgnora a verificação de qualidade Formato Lua.
ignore-object-pascal-formatIgnora a verificação de qualidade Formato Object Pascal.
ignore-objc-formatIgnora a verificação de qualidade Formato de Objective-C.
ignore-percent-placeholdersIgnora a verificação de qualidade Espaços reservados de percentagem.
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 chaveta 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 Forma 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 utilizada.
ignore-md-linkIgnora a verificação de qualidade Hiperligações de marcação.
ignore-md-reflinkIgnora a verificação de qualidade Referências de Markdown.
ignore-md-syntaxIgnora a verificação de qualidade Sintaxe de Markdown.
ignore-max-lengthIgnora a verificação de qualidade Tamanho máximo da tradução.
ignore-max-linesIgnora a verificação de qualidade Número máximo de linhas.
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 Dois pontos não correspondentes.
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 não compatí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 não coincidentes.
ignore-pluralsIgnora a verificação de qualidade Faltam plurais.
ignore-multiple-capitalIgnora a verificação de qualidade Múltiplas maiúsculas.
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 da 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-safe-mdxIgnora a verificação de qualidade MDX Seguro.
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 Nova linha no final.
ignore-end-spaceIgnora a verificação de qualidade Espaço no final.
ignore-sameIgnora a verificação de qualidade Tradução inalterada.
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 Markup XML.
ignore-xml-invalidIgnora a verificação de qualidade Sintaxe XML.
ignore-zero-width-spaceIgnora a verificação de qualidade Espaçamento nulo.
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 falhadas.
ignore-unnamed-formatIgnora a verificação de qualidade Várias variáveis sem nome.
ignore-source-max-lengthIgnora a verificação de qualidade Tamanho da cadeia de carateres fonte.
ignore-optional-pluralIgnora 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).
Sinalizadores baseados em localização¶
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: Este marcador é automaticamente adicionado às cadeias em ficheiros Markdown, se a extensão do local for.md,.markdown, ou.mdx.
Forçar verificações¶
As verificações aplicadas não podem ser ignoradas e marcam a cadeia de carateres enquanto Precisa de edição (veja Estados de tradução). Isto evita os tradutores de esconderem tais verificações.
Dica
Ativar a imposição de verificação não a ativa automaticamente. Algumas verificações pode ter que ser ativadas adicionando o marcador correspondente aos marcadores da cadeia de carateres ou componente.
Isto é mais adequado com verificações que podem causar sérios problemas quando utilizadas, como verificações para Cadeias formatadas. Usar para verificações de estilo como Tradução inalterada não é recomendado porque ignorar estas verificações, por vezes, é uma abordagem razoável.
A Filtro de qualidade de tradução pode ser usada para excluir cadeias de carateres que precisam de ser editadas de ser enviadas para o controlo de versão.
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).
Ferramenta de gestão de fontes do Weblate em Fonts sob o menu Operações do seu projeto de tradução fornece interface para carregar e gerir fontes. As fontes TrueType ou OpenType podem ser carregadas, configurar grupos de fontes e usá-los na verificação.
Os grupos de letras permitem definir letras diferentes para idiomas diferentes, o que é normalmente necessário para idiomas não-latinos:
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:
A família de letras e o estilo são automaticamente reconhecidos após carregá-los:
Pode ter muitas letras carregadas para Weblate:
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:5Define a largura máxima em pixels e, opcionalmente, a quantidade máxima de linhas . A quebra de palavras é aplicada quando mais do que uma linha é configurada.
font-family:ubuntuDefine o grupo de letras para usar especificando seu identificador.
font-size:22Define 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.
Crie uma subclasse de weblate.checks.Check
Define alguns atributos.
Implemente o método
check(se quiser lidar com plurais no seu código) ou o métodocheck_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, sugestões automáticas, 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».
"""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