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.
Personalizando comportamento a usar marcadores¶
Pode ajustar o comportamento de Weblate (principalmente de verificações) para cada cadeia fonte (na revisão de cadeias fonte, veja Informações adicionais sobre cadeias fonte) ou em Configuração de componente (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.
dos-eol
Usa marcadores de ponta de linha do DOS em vez dos Unix (
\r\n
em vez de\n
).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 o espaçamento de letras para verificações da renderização, veja Gerir letras.
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:FONTE
Marca esta cadeia como uma variante do texto com a fonte correspondente. Veja Variantes de cadeias.
regex:EXPRESSÃO REGULAR
Expressão regular para corresponder à tradução; veja Expressão regular.
forbidden
Indica tradução proibida num 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 inalterada.
check-glossary
Ative a verificação de qualidade Não segue o glossário.
angularjs-format
Ative a verificação de qualidade Cadeia de interpolação AngularJS.
c-format
Ative a verificação de qualidade Formato C.
c-sharp-format
Ative a verificação de qualidade Formato C#.
es-format
Ative a verificação de qualidade :ref: check-es-format.
i18next-interpolation
Ative a verificação de qualidade Interpolação de i18next.
java-format
Ative a verificação de qualidade Formato Java.
java-messageformat
Ative a verificação de qualidade Formato de Mensagem Java.
javascript-format
Ative a verificação de qualidade :ref:”check-javascript-format”.
lua-format
Ative a verificação de qualidade Formato Lua.
object-pascal-format
Ative a verificação de qualidade Formato Object Pascal.
percent-placeholders
Enable the Espaços reservados de percentagem quality check.
perl-format
Enable the Formato Perl quality check.
php-format
Enable the Formato PHP quality check.
python-brace-format
Enable the Formato de chaveta Python quality check.
python-format
Enable the Formato Python quality check.
qt-format
Enable the Formato Qt quality check.
qt-plural-format
Enable the Forma plural Qt quality check.
ruby-format
Enable the Formato Ruby quality check.
scheme-format
Enable the Formato Scheme quality check.
vue-format
Enable the Formatação vue I18n quality check.
md-text
Treat text as a Markdown document. Enable Hiperligações de marcação, Referências de Markdown, and Sintaxe de Markdown quality checks.
safe-html
Enable the HTML inseguro quality check.
url
The string should consist of only a URL. Enable the URL quality check.
ignore-bbcode
Skip the Markup BBcode quality check.
ignore-duplicate
Skip the Palavras consecutivas duplicadas quality check.
ignore-check-glossary
Skip the Não segue o glossário quality check.
ignore-double-space
Skip the Espaço duplo quality check.
ignore-angularjs-format
Skip the Cadeia de interpolação AngularJS quality check.
ignore-c-format
Skip the Formato C quality check.
ignore-c-sharp-format
Skip the Formato C# quality check.
ignore-es-format
Skip the Literais de modelo de ECMAScript quality check.
ignore-i18next-interpolation
Skip the Interpolação de i18next quality check.
ignore-java-format
Skip the Formato Java quality check.
ignore-java-messageformat
Skip the Formato de Mensagem Java quality check.
ignore-javascript-format
Skip the Formato JavaScript quality check.
ignore-lua-format
Skip the Formato Lua quality check.
ignore-object-pascal-format
Skip the Formato Object Pascal quality check.
ignore-percent-placeholders
Skip the Espaços reservados de percentagem quality check.
ignore-perl-format
Skip the Formato Perl quality check.
ignore-php-format
Skip the Formato PHP quality check.
ignore-python-brace-format
Skip the Formato de chaveta Python quality check.
ignore-python-format
Skip the Formato Python quality check.
ignore-qt-format
Skip the Formato Qt quality check.
ignore-qt-plural-format
Skip the Forma plural Qt quality check.
ignore-ruby-format
Skip the Formato Ruby quality check.
ignore-scheme-format
Skip the Formato Scheme quality check.
ignore-vue-format
Skip the Formatação vue I18n quality check.
ignore-translated
Skip the Foi traduzido quality check.
ignore-inconsistent
Skip the Inconsistente quality check.
ignore-kashida
Skip the Letra Kashida utilizada quality check.
ignore-md-link
Skip the Hiperligações de marcação quality check.
ignore-md-reflink
Skip the Referências de Markdown quality check.
ignore-md-syntax
Skip the Sintaxe de Markdown quality check.
ignore-max-length
Skip the Tamanho máximo da tradução quality check.
ignore-max-size
Skip the Tamanho máximo da tradução quality check.
ignore-escaped-newline
Skip the \n não correspondente quality check.
ignore-end-colon
Skip the Dois pontos não correspondentes quality check.
ignore-end-ellipsis
Skip the Reticências não correspondentes quality check.
ignore-end-exclamation
Skip the Ponto de exclamação não correspondente quality check.
ignore-end-stop
Skip the Ponto final não correspondente quality check.
ignore-end-question
Skip the Ponto de interrogação não correspondente quality check.
ignore-end-semicolon
Skip the Ponto e vírgula não correspondente quality check.
ignore-newline-count
Skip the Quebras de linha não coincidentes quality check.
ignore-plurals
Skip the Faltam plurais quality check.
ignore-placeholders
Skip the Espaços reservados quality check.
ignore-punctuation-spacing
Skip the Espaçamento da pontuação quality check.
ignore-regex
Skip the Expressão regular quality check.
ignore-same-plurals
Skip the Mesmos plurais quality check.
ignore-begin-newline
Skip the Nova linha no início quality check.
ignore-begin-space
Skip the Espaços no início quality check.
ignore-end-newline
Skip the Nova linha no final quality check.
ignore-end-space
Skip the Espaço no final quality check.
ignore-same
Skip the Tradução inalterada quality check.
ignore-safe-html
Skip the HTML inseguro quality check.
ignore-url
Skip the URL quality check.
ignore-xml-tags
Skip the Markup XML quality check.
ignore-xml-invalid
Skip the Sintaxe XML quality check.
ignore-zero-width-space
Skip the Espaçamento nulo quality check.
ignore-ellipsis
Skip the Reticências quality check.
ignore-long-untranslated
Skip the Não traduzido há muito tempo quality check.
ignore-multiple-failures
Skip the Várias verificações falhadas quality check.
ignore-unnamed-format
Skip the Várias variáveis sem nome quality check.
ignore-optional-plural
Skip the Não pluralizado quality check.
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 a definir Verificações impostas em Configuração de componente. 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 Estados de tradução).
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: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.
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 © 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