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 © 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 à classe Python em AUTOFIX_LIST, veja Verificações de qualidade personalizadas, extensões e correções automáticas.
Personalizando comportamento a usar 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 cadeias 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 ficheiros 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 sinalizadores atualmente aceitos:
rst-textTrata um texto como um documento reStructuredText, afeta Tradução inalterada.
dos-eolUsa marcadores de ponta de linha do DOS em vez dos Unix (
\r\nem vez de\n).read-onlyA cadeia é somente leitura e não deve ser editada no Weblate, veja Textos somente leitura.
terminologyUsed 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: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:NOMEDefine a família de letras para verificações da renderização, veja Gerir letras.
font-weight:PESODefine 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:ESPAÇAMENTODefine o espaçamento de letras para verificações da renderização, veja Gerir letras.
icu-flags:MARCADORESDefine marcadores para personalizar o comportamento da verificação de qualidade MessageFormat do ICU.
icu-tag-prefix:PREFIXODefine um prefixo necessário para etiquetas XML para a verificação de qualidade MessageFormat do ICU.
placeholders:NOME:NOME2:...Cadeias 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 Tamanho 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:FONTEMarca esta cadeia como uma variante do texto com a fonte correspondente. Veja Variantes de cadeias.
regex:EXPRESSÃO REGULARExpressão regular para corresponder à tradução; veja Expressão regular.
forbiddenIndica tradução proibida num glossário, veja Traduções proibidas.
strict-sameFaz com que «Tradução não alterada» evite usar a lista negra de palavras embutidas, veja Tradução inalterada.
check-glossaryAtive a verificação de qualidade Não segue o glossário.
angularjs-formatAtive a verificação de qualidade Cadeia de interpolação AngularJS.
c-formatAtive a verificação de qualidade Formato C.
c-sharp-formatAtive a verificação de qualidade Formato C#.
es-formatAtive a verificação de qualidade :ref: check-es-format.
i18next-interpolationAtive a verificação de qualidade Interpolação de i18next.
icu-message-formatAtiva a verificação de qualidade MessageFormat do ICU.
java-printf-formatAtiva a verificação de qualidade Formato Java.
java-formatAtive a verificação de qualidade Formato de Mensagem Java.
javascript-formatAtive a verificação de qualidade :ref:”check-javascript-format”.
lua-formatAtive a verificação de qualidade Formato Lua.
object-pascal-formatAtive a verificação de qualidade Formato Object Pascal.
percent-placeholdersAtiva a verificação de qualidade Espaços reservados de percentagem.
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.
md-textTreat text as a Markdown document, and provide Markdown syntax highlighting on the translation text area. Enables Hiperligações de marcação, Referências de Markdown, and Sintaxe de Markdown quality checks.
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 :ref:`check-placeholders `.
safe-htmlAtiva a verificação de qualidade HTML inseguro.
urlO texto deve consistir apenas numa URL. Ativa a verificação de qualidade URL.
ignore-all-checksIgnora todas as verificações de qualidade.
ignore-bbcodeIgnora a verificação de qualidade Markup BBCode.
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-angularjs-formatIgnora a verificação de qualidade Cadeia de interpolação AngularJS.
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 :ref:`check-java-printf-format `.
ignore-java-formatIgnora a verificação de qualidade Formato de Mensagem Java.
ignore-javascript-formatIgnora a verificação de qualidade Formato JavaScript.
ignore-lua-formatIgnora a verificação de qualidade Formato Lua.
ignore-object-pascal-formatIgnora a verificação de qualidade Formato Object Pascal.
ignore-percent-placeholdersIgnora a verificação de qualidade Espaços reservados de percentagem.
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-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-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-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-placeholdersIgnora a verificação de qualidade Espaços reservados.
ignore-punctuation-spacingIgnora a verificação de qualidade Espaçamento da pontuação.
ignore-regexIgnora a verificação de qualidade Expressão regular.
ignore-reusedSkip the Reused translation quality check.
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-icu-message-format-syntaxIgnora 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-optional-pluralIgnora 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 Configuração de componente, 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 definindo Verificações impostas em Configuração de componente. Cada verificação listada não pode ser dispensado na interface do utilizador 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.
Gerir letras#
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 utilizador 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 a usar um sinalizador de tradução (ver Personalizando comportamento a usar marcadores).
Ferramenta de gestão de fontes do Weblate em Fonts sob o menu Gerir 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 usar as letras para verificar o comprimento da cadeia, passe-a os sinalizadores apropriados (veja Personalizando comportamento a usar marcadores). Provavelmente precisará dos seguintes:
max-size:500Define o máximo de largura em pixels.
font-family:ubuntuDefine o grupo de letras para usar especificando seu identificador.
font-size:22Define o tamanho da fonte em pixels.
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.
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, 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 © 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