Complementos¶
Add-ons provide ways to customize and automate the translation workflow. Admins can add and manage add-ons from the Operations ↓ Add-ons menu of each respective translation project or component. Add-ons can be also installed site-wide in Interface de gerenciamento.
Dica
Você também pode configurar complementos usando API, DEFAULT_ADDONS ou install_addon.
Add-ons that opt in to manual triggering can be run from add-on management or using the API. Results are recorded in the add-on activity log.
Eventos que acionam complementos¶
Instalação de complemento¶
Acionado quando um complemento está sendo instalado.
Atualização do componente¶
Acionado sempre que ocorre uma alteração em um componente, por exemplo:
Textos são adicionados no repositório.
Um texto é adicionado.
Uma nova tradução é adicionada.
Diário¶
Acionado diariamente, mas os complementos geralmente dividem a carga diária entre os componentes, dependendo de BACKGROUND_TASKS.
Alteração de evento¶
Acionado depois que um evento de alteração é criado.
Manual trigger¶
Triggered when an add-on is run manually from add-on management or the API.
Pós-adição do repositório¶
Acionado logo após a nova tradução ser adicionada e o commit ser feito.
Pós-commit do repositório¶
Acionado logo após as alterações terem seu commit feito.
Pós-push do repositório¶
Acionado logo após o repositório ter o push feito para o upstream.
Repository post-remove¶
Triggered just after a translation is removed.
Pós-atualização do repositório¶
Acionado sempre que novas alterações forem trazidas do repositório upstream.
Pré-commit do repositório¶
Acionado imediatamente antes de as alterações terem seu commit feito.
Pré-push do repositório¶
Acionado imediatamente antes do repositório ter seu push feito para o upstream.
Pré-atualização do repositório¶
Acionado imediatamente antes da tentativa de atualização do repositório.
Pós-salvamento da unidade¶
Acionado logo após o texto ser salvo.
Unit post-sync¶
Triggered after the string is synchronized with the VCS.
Pré-criação da unidade¶
Acionado logo após o texto recém-criado ser salvo.
Complementos integrados¶
Tradução automática¶
- ID do complemento:
weblate.autotranslate.autotranslate- Configuração:
modeModo de tradução automática
Escolhas disponíveis:¶ suggestAdicionar como sugestão
translateAdicionar como tradução
fuzzyAdicionar como “Necessita de edição”
qConsulta
Observe que a tradução de todos os textos descartará todas as traduções existentes.
auto_sourceFonte das traduções automáticas
Escolhas disponíveis:¶ othersOutros componentes da tradução
mtTradução automática
componentComponente
Insira o slug de um componente para ser usado como fonte, mantenha em branco para usar todos os componentes no projeto atual.
enginesMecanismos para tradução automática
thresholdLimite de pontuação
- Gatilhos:
Instalação de complemento, Atualização do componente, Diário, Alteração de evento
Traduz automaticamente os textos usando a tradução automática ou outros componentes.
CDN de localização do JavaScript¶
Adicionado na versão 4.2.
- ID do complemento:
weblate.cdn.cdnjs- Configuração:
thresholdLimiar de tradução
A porcentagem de textos traduzidos que devem estar presentes para que a tradução seja incluída.
css_selectorSeletor CSS
Seletor CSS para detectar elementos localizáveis.
cookie_nameNome do cookie de idioma
Nome do cookie que armazena preferência de idioma.
filesExtrair textos de arquivos HTML
Lista de nomes de arquivos em URLs atuais ou remotos para analisar para textos traduzíveis.
- Gatilhos:
Instalação de complemento, Diário, Pós-commit do repositório, Pós-atualização do repositório
Publica traduções na rede de entrega de conteúdo para uso em localização de JavaScript ou de HTML.
Pode ser usado para localizar páginas HTML estáticas ou para carregar a localização no código JavaScript.
Gera um URL exclusivo para seu componente, que pode ser incluído em páginas HTML para localizá-los. Consulte Traduzindo HTML e JavaScript usando CDN do Weblate para mais detalhes.
Nota
Esse complemento requer configuração adicional no servidor Weblate. LOCALIZE_CDN_PATH configura onde os arquivos gerados serão gravados (em um sistema de arquivos) e LOCALIZE_CDN_URL define onde eles serão servidos (URL). O serviço dos arquivos não é feito pelo Weblate e deve ser configurado externamente (normalmente usando um serviço CDN).
Esse complemento é configurado em Hosted Weblate e disponibiliza os arquivos via https://weblate-cdn.com/.
Remover textos vazios¶
Adicionado na versão 4.4.
- ID do complemento:
weblate.cleanup.blank- Configuração:
Esse complemento não tem configuração.
- Gatilhos:
Instalação de complemento, Pós-commit do repositório, Pós-atualização do repositório
Remove textos não traduzidos dos arquivos de tradução.
Use isso para não ter textos vazios em arquivos de tradução (por exemplo, se sua biblioteca de localização os exibe como em falta em vez de recorrer ao texto fonte).
Limpar arquivos de tradução¶
- ID do complemento:
weblate.cleanup.generic- Configuração:
Esse complemento não tem configuração.
- Gatilhos:
Instalação de complemento, Pós-atualização do repositório, Pré-commit do repositório
Atualiza todos os arquivos de tradução para corresponder ao arquivo base monolíngue. Para a maioria dos formatos isto significa remover chaves de tradução obsoletas que não estão mais presentes no arquivo base.
Para formatos que contêm conteúdo adicional além dos textos de tradução (como Arquivos HTML, Arquivos RC do Windows ou Formato OpenDocument), isso também sincroniza o arquivo de tradução com o arquivo base.
Adicionar idiomas em falta¶
- ID do complemento:
weblate.consistency.languages- Configuração:
Esse complemento não tem configuração.
- Gatilhos:
Instalação de complemento, Diário, Pós-adição do repositório
Garante que um conjunto consistente de idiomas seja usado para todos os componentes de um projeto.
Nota
The components shared from other projects are not considered in this.
Os idiomas ausentes são verificados uma vez a cada 24 horas e quando novos idiomas são adicionados no Weblate.
Ao contrário da maioria dos outros, esse complemento afeta todo o projeto.
Dica
Traduza automaticamente os textos recém-adicionados com Tradução automática.
Descoberta de componente¶
- ID do complemento:
weblate.discovery.discovery- Configuração:
matchExpressão regular para corresponder aos arquivos de tradução
The regular expression must define named groups for component and language.
file_formatFormato de arquivo
name_templatePersonalizar nome do componente
Use Django template syntax. This template must include {{ component }}.
base_file_templateDefina o nome do arquivo base monolíngue
Leave empty for bilingual translation files. When set, this template must include {{ component }}.
new_base_templateDefinir o arquivo base para novas traduções
Filename of file used for creating new translations. For gettext choose .pot file. This template must include {{ component }}.
intermediate_templateArquivo de idioma intermediário
Filename of intermediate translation file. In most cases this is a translation file provided by developers and is used when creating actual source strings. This template must include {{ component }}.
language_regexFiltro de idioma
Expressão regular para filtrar arquivos de tradução ao examinar por uma máscara de arquivo.
copy_addonsClonar complementos do componente principal para as recém-criadas
removeRemova componentes para arquivos inexistentes
- Gatilhos:
Adiciona ou remove automaticamente componentes do projeto com base nas alterações de arquivo no sistema de controle de versão.
The matching is done using regular expressions enabling complex configuration, but some knowledge is required to do so. The regular expression to match translation files has to contain two named groups to match component and language. All named groups in the regular expression can be used as variables in the template fields.
Discovery requirements¶
To discover a component successfully, the configuration has to do all of the following:
The regular expression must define
componentandlanguagenamed groups.Template fields used to name or locate per-component files must include
{{ component }}, so the rendered value actually changes for each discovered component.For monolingual formats, the component must contain a file matching
base_file_templateand at least one translation file matchingmatch.
Worked example: news_<lang>.md¶
This is a common filename-based language variant layout:
docs/news_en.mddocs/news_cs.mddocs/guide_en.md
Use the Filename-based language variants preset for a starting point, then choose the matching file format and review the populated values.
- Expressão regular:
(?:(?P<path>.*/))?(?P<component>.+?)_(?P<language>[A-Za-z]{2,3}(?:[_-][A-Za-z0-9]+)*)\.(?P<extension>[^/.]+)- Nome do componente:
{{ component }}- Discovered file masks:
docs/news_*.mddocs/guide_*.md
In this example, {{ component }} resolves to the basename before the language
suffix, so docs/news_en.md, docs/news_pt_BR.md, and
docs/news_pt-BR.md all become the news component.
Você pode usar a marcação do template Django em todos os campos de nome de arquivo, por exemplo:
{{ component }}Component name parsed from the
componentmatch group{{ component|title }}Nome do arquivo do componente com a primeira letra em maiúscula
{{ path }}: {{ component }}Grupo de correspondência personalizado da expressão regular
Uma vez que você acertar Salvar, uma prévia dos componentes correspondentes será apresentada, de onde você pode verificar se a configuração realmente corresponde às suas necessidades:
Exemplos de descoberta de componentes¶
The worked example above covers the most common filename-based variant layout. The following examples show other repository structures you can match.
Uma pasta por idioma¶
Uma pasta por idioma contendo arquivos de traduções para componentes.
- Expressão regular:
(?P<language>[^/.]*)/(?P<component>[^/]*)\.po- Arquivos correspondentes:
cs/application.pocs/website.pode/application.pode/website.po
Layout de localidades gettext¶
Estrutura usual para armazenar arquivos PO.
- Expressão regular:
locale/(?P<language>[^/.]*)/LC_MESSAGES/(?P<component>[^/]*)\.po- Arquivos correspondentes:
locale/cs/LC_MESSAGES/application.polocale/cs/LC_MESSAGES/website.polocale/de/LC_MESSAGES/application.polocale/de/LC_MESSAGES/website.po
Nomes de arquivos complexos¶
Usando ambos componente e nome do idioma no nome do arquivo.
- Expressão regular:
src/locale/(?P<component>[^/]*)\.(?P<language>[^/.]*)\.po- Arquivos correspondentes:
src/locale/application.cs.posrc/locale/website.cs.posrc/locale/application.de.posrc/locale/website.de.po
Código de idioma repetido¶
Usando idioma em ambos caminho e nome do arquivo.
- Expressão regular:
locale/(?P<language>[^/.]*)/(?P<component>[^/]*)/(?P=language)\.po- Arquivos correspondentes:
locale/cs/application/cs.polocale/cs/website/cs.polocale/de/application/de.polocale/de/website/de.po
Dividir textos do Android¶
Textos de recurso do Android, divididos em vários arquivos.
- Expressão regular:
res/values-(?P<language>[^/.]*)/strings-(?P<component>[^/]*)\.xml- Arquivos correspondentes:
res/values-cs/strings-about.xmlres/values-cs/strings-help.xmlres/values-de/strings-about.xmlres/values-de/strings-help.xml
Combinando vários caminhos¶
Projeto Maven multimódulo com traduções de propriedades Java.
- Expressão regular:
(?P<originalHierarchy>.+/)(?P<component>[^/]*)/src/main/resources/ApplicationResources_(?P<language>[^/.]*)\.properties- Nome do componente:
{{ originalHierarchy }}: {{ component }}- Arquivos correspondentes:
parent/module1/submodule/src/main/resources/ApplicationResources_fr.propertiesparent/module1/submodule/src/main/resources/ApplicationResource_es.propertiesparent/module2/src/main/resources/ApplicationResource_de.propertiesparent/module2/src/main/resources/ApplicationResource_ro.properties
Dica
Component discovery add-on uses URLs internas do Weblate. It’s a convenient way to share
VCS setup between multiple components. Linked components use the local repository of
the main component set up by filling weblate://project/main-component
into the Repositório do código-fonte field (in Operations ↓ Settings ↓
Version control system) of each respective component.
This saves time with configuration and system resources too.
Dica
Certifique-se de que o novo componente contenha o conjunto completo de idiomas traduzíveis com Adicionar idiomas em falta.
Ver também
Mensagens do Fedora¶
Adicionado na versão 5.15.
- ID do complemento:
weblate.fedora_messaging.publish- Configuração:
eventsAlterar eventos
amqp_hostHost do broker AMQP
O broker AMQP ao qual se conectar.
amqp_sslUtilize SSL para conexão AMQP
ca_certCertificados CA
Conjunto de certificados CA codificados em PEM usados para validar o certificado apresentado pelo servidor.
client_keyChave SSL do cliente
Chave SSL privada do cliente codificada em PEM.
client_certCertificados SSL do cliente
Certificado SSL do cliente codificado em PEM.
- Gatilhos:
Envia notificações para um servidor AMQP compatível com o Mensagens do Fedora.
Fedora Messaging é um editor baseado em AMQP para todas as mudanças que acontecem no Weblate. Você pode conectar serviços adicionais nas mudanças que acontecem no Weblate usando isso.
Message topic¶
Todas as mensagens têm o tópico weblate.<action>.<project>.<component>.<translation>. A ação é uma representação textual em minúsculas da ação com sublinhados em vez de espaços, por exemplo, resource_update. Todas as outras partes são opcionais e representam o slug do objeto ou um código de idioma.
Message body¶
The body consists of following fields (given that they are available for the event):
change_idID numérico da alteração
actionVerbose name of the change.
timestampRegistro de data/hora em formato ISO
targetNovo valor da alteração (por exemplo, nova tradução do texto)
oldValor antigo da alteração (por exemplo, tradução anterior do texto)
sourceSource string.
urlAbsolute URL to view the related object.
authorNome de usuário do autor (pode ser diferente do usuário, por exemplo, ao aceitar sugestões)
userActing username
projectSlug da URL do projeto
componentSlug do componente
translationCódigo de idioma de tradução
Message headers¶
There are additional headers which you might utilize for routing as well:
actionVerbose name of the change.
projectSlug da URL do projeto
componentSlug do componente
Example messages¶
Repository merge event:
{
"id": 1,
"action": "Merged repository",
"timestamp": "2017-06-15T11:30:47.325000+00:00",
"url": "http://example.com/projects/test/test/",
"component": "test"
}
New source string event:
{
"id": 2,
"action": "New source string",
"timestamp": "2017-06-15T11:30:47.372000+00:00",
"url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
"component": "test",
"translation": "cs",
"source": ["Hello, world!\n"]
}
Resource update event:
{
"id": 6,
"action": "Resource update",
"timestamp": "2017-06-15T11:30:47.410000+00:00",
"url": "http://example.com/projects/test/test/cs/",
"project": "test",
"component": "test",
"translation": "cs"
}
{
"id": 7,
"action": "Resource update",
"timestamp": "2017-06-15T11:30:47.510000+00:00",
"url": "http://example.com/projects/test/test/de/",
"project": "test",
"component": "test",
"translation": "de"
}
{
"id": 8,
"action": "Resource update",
"timestamp": "2017-06-15T11:30:47.595000+00:00",
"url": "http://example.com/projects/test/test/it/",
"project": "test",
"component": "test",
"translation": "it"
}
Project removal event:
{
"id": 9,
"action": "Removed project",
"timestamp": "2019-10-17T15:57:08.559420+00:00",
"target": "test",
"user": "testuser"
}
New contributor event:
{
"id": 11,
"action": "New contributor",
"timestamp": "2019-10-17T15:57:08.759960+00:00",
"url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
"author": "testuser",
"user": "testuser",
"project": "test",
"component": "test",
"translation": "cs",
"source": ["Hello, world!\n"]
}
New translation event:
{
"id": 12,
"action": "New translation",
"timestamp": "2019-10-17T15:57:08.772591+00:00",
"url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
"target": ["Ahoj svete!\n"],
"author": "testuser",
"user": "testuser",
"project": "test",
"component": "test",
"translation": "cs",
"source": ["Hello, world!\n"]
}
Ver também
Editor em massa¶
- ID do complemento:
weblate.flags.bulk- Configuração:
qConsulta
stateStatus a definir
Escolhas disponíveis:¶ -1Não alterar
10Necessita de edição
11Necessita de edição (Precisa ser editado)
12Necessita de edição (Precisa ser verificado)
20Traduzido
30Aprovado
add_flagsMarcadores de tradução para adicionar
remove_flagsMarcadores de tradução a remover
add_labelsEtiquetas para adicionar
remove_labelsEtiquetas para remover
- Gatilhos:
Edição em massa de marcadores, etiquetas ou status de textos.
Exemplos:
Solicitação de busca |
|
|---|---|
Etiquetas para adicionar |
recente |
Solicitação de busca |
|
|---|---|
Marcadores de tradução para adicionar |
|
Solicitação de busca |
|
|---|---|
Marcadores de tradução para adicionar |
|
Marcar traduções não alteradas como “Precisa ser editado”¶
- ID do complemento:
weblate.flags.same_edit- Configuração:
Esse complemento não tem configuração.
- Gatilhos:
Sempre que um novo texto traduzível é importado do VCS e corresponde a um texto fonte, é marcado como “Precisa ser editado” no Weblate. Especialmente útil para formatos de arquivo que incluem textos fonte para textos não traduzidas.
Dica
Você também pode querer reforçar a verificação Tradução não alterada adicionando o marcador strict-same aos Marcadores de tradução.
Ver também
Marcar novos textos fonte como “Necessita de edição”¶
- ID do complemento:
weblate.flags.source_edit- Configuração:
Esse complemento não tem configuração.
- Gatilhos:
Sempre que um novo texto fonte for importado do VCS, ele é marcado como “Precisa ser verificado” no Weblate. Desta forma você pode filtrar facilmente e editar os textos fontes escritos pelos desenvolvedores.
Ver também
Marcar novas traduções como “Precisa ser editado”¶
- ID do complemento:
weblate.flags.target_edit- Configuração:
Esse complemento não tem configuração.
- Gatilhos:
Sempre que um novo texto traduzível for importado do VCS, ele é marcado como “Precisa ser editado” no Weblate. Desta forma você pode filtrar facilmente e editar as traduções criadas pelos desenvolvedores.
Ver também
Marcar traduções alteradas do repositório como “Precisa ser editado”¶
- ID do complemento:
weblate.flags.target_repo_update- Configuração:
Esse complemento não tem configuração.
- Gatilhos:
Sempre que a tradução de um texto for modificada do VCS, ela é marcada como “Precisa ser editado” no Weblate. Especialmente útil se os arquivos de traduções são atualizados manualmente ou por um serviço externo.
Ver também
Preencher textos somente leitura com a fonte¶
Adicionado na versão 4.18.
- ID do complemento:
weblate.generate.fill_read_only- Configuração:
Esse complemento não tem configuração.
- Gatilhos:
Instalação de complemento, Atualização do componente, Diário
Preenche a tradução de textos somente leitura com o texto fonte.
Gerador de estatísticas¶
- ID do complemento:
weblate.generate.generate- Configuração:
filenameNome do arquivo gerado
templateConteúdo do arquivo gerado
- Gatilhos:
Gera um arquivo contendo as informações detalhadas sobre o status da tradução.
Você pode usar um modelo do Django, tanto de nome de arquivo e conteúdo, consulte Marcação de modelo para uma descrição detalhada de marcação.
Por exemplo, a geração de um arquivo de resumo para cada tradução:
- Nome do arquivo gerado
locale/{{ language_code }}.json- Conteúdo
{ "language": "{{ language_code }}", "strings": "{{ stats.all }}", "translated": "{{ stats.translated }}", "last_changed": "{{ stats.last_changed }}", "last_author": "{{ stats.last_author }}", }
Ver também
Preencher tradução com fonte¶
Adicionado na versão 4.11.
- ID do complemento:
weblate.generate.prefill- Configuração:
Esse complemento não tem configuração.
- Gatilhos:
Instalação de complemento, Atualização do componente, Diário
Preenche textos de tradução com texto fonte.
All untranslated strings in the component will be filled with the source string, and marked as needing edit. Use this when you can not have empty strings in the translation files. .. AUTOGENERATED START: weblate.generate.pseudolocale .. This section is automatically generated by ./manage.py list_addons. Do not edit manually.
Geração de pseudolocalidade¶
Adicionado na versão 4.5.
- ID do complemento:
weblate.generate.pseudolocale- Configuração:
sourceTextos fonte
targetTradução alvo
Todos os textos nesta tradução serão substituídos
prefixTexto estático anexado
var_prefixTexto da variável anexado
suffixTexto estático acrescentado
var_suffixTexto da variável acrescentado
var_multiplierMultiplicador de texto variável
Quantas vezes repetir o texto da variável, dependendo do comprimento do texto fonte.
include_readonlyIncluir textos somente leitura
- Gatilhos:
Instalação de complemento, Atualização do componente, Diário
Gera uma tradução adicionando prefixo e sufixo de textos fonte automaticamente.
Pseudolocalidades são úteis para encontrar textos que não estão preparados para localização. Isso é feito alterando todos os textos fonte traduzíveis para facilitar a descoberta de textos inalterados ao executar o aplicativo no idioma da pseudolocalidade.
Também é possível encontrar textos cujas contrapartes localizadas podem não se ajustar ao layout.
O uso das partes variáveis torna possível buscar por textos que podem não caber na interface do usuário após a localização - elas estendem o texto com base no comprimento do texto fonte. Os textos variáveis são repetidos pelo comprimento do texto multiplicado pelo multiplicador. Por exemplo Hello world com texto variável _ e multiplicador variável de 1 se torna Hello world___________ - o texto é repetido uma vez para cada caractere no texto fonte.
Os textos serão gerados usando o seguinte padrão:
Texto estático prefixado Texto variável prefixado Texto fonte Texto variável pós-fixado Texto estático como pós-fixado
Dica
Você pode usar idiomas reais para teste, mas existem pseudolocalidades disponíveis no Weblate - en_XA e ar_XB.
Dica
Você pode usar esse complemento para iniciar a tradução para uma nova localidade de um idioma existente ou idioma semelhante. Depois de adicionar a tradução ao componente, siga para o complemento. Exemplo: Se você tem fr e deseja iniciar a tradução fr_CA, simplesmente defina fr como fonte,` fr_CA` como o destino e deixe o prefixo e o sufixo em branco.
Desinstale o complemento depois de preencher a nova tradução para evitar que o Weblate altere as traduções feitas após a cópia.
Colaboradores nos comentários¶
- ID do complemento:
weblate.gettext.authors- Configuração:
Esse complemento não tem configuração.
- Gatilhos:
Atualiza a parte do comentário no cabeçalho do arquivo PO para incluir nomes de colaboradores e os anos de colaborações.
O cabeçalho do arquivo PO terá a seguinte aparência:
# Michal Čihař <michal@weblate.org>, 2012, 2018, 2019, 2020.
# Pavel Borecki <pavel@example.com>, 2018, 2019.
# Filip Hron <filip@example.com>, 2018, 2019.
# anonymous <noreply@weblate.org>, 2019.
Atualizar variável ALL_LINGUAS no arquivo “configure”¶
- ID do complemento:
weblate.gettext.configure- Configuração:
Esse complemento não tem configuração.
- Gatilhos:
Instalação de complemento, Diário, Pós-adição do repositório, Repository post-remove
Updates the ALL_LINGUAS variable in “configure”, “configure.in” or “configure.ac” files, when a translation is added or removed.
Updates the ALL_LINGUAS variable in configure, configure.in or any
configure.ac files, when a translation is added or removed.
Personalizar saída do gettext¶
Removido na versão 5.13: Replaced by Parâmetros de formato de arquivo.
Atualizar arquivo POT (Django)¶
Adicionado na versão 5.17.
- ID do complemento:
weblate.gettext.django- Configuração:
intervalAtualizar frequência
Com que frequência o complemento deve atualizar o arquivo POT quando o componente for restaurado.
Escolhas disponíveis:¶ dailyDiário
weeklySemanalmente
monthlyMensal
normalize_headerNormalizar cabeçalho POT
Atualiza os cabeçalhos gettext e substitui os espaço reservado em comentários do POT.
- Gatilhos:
Instalação de complemento, Manual trigger, Pós-atualização do repositório
Atualiza o modelo gettext usando o comando makemessages integrado do Django.
Atualizar arquivo LINGUAS¶
- ID do complemento:
weblate.gettext.linguas- Configuração:
Esse complemento não tem configuração.
- Gatilhos:
Instalação de complemento, Diário, Pós-adição do repositório, Repository post-remove
Updates the LINGUAS file when a translation is added or removed.
Atualizar arquivo POT (Meson)¶
Adicionado na versão 5.17.
- ID do complemento:
weblate.gettext.meson- Configuração:
intervalAtualizar frequência
Com que frequência o complemento deve atualizar o arquivo POT quando o componente for restaurado.
Escolhas disponíveis:¶ dailyDiário
weeklySemanalmente
monthlyMensal
normalize_headerNormalizar cabeçalho POT
Atualiza os cabeçalhos gettext e substitui os espaço reservado em comentários do POT.
comment_modeComentários do código
Selecione se o xgettext deve extrair nenhum, todos ou apenas os comentários marcados com uma tag específica.
Escolhas disponíveis:¶ offNão extrair comentários
allExtrair todos os comentários
taggedExtrair comentários com tag
comment_tagTag do comentário
Tag passada para o xgettext para extração de comentários ao usar o modo de comentário taggeado.
checksVerificações do xgettext
Validação adicional do xgettext a habilitar para mensagens extraídas.
Escolhas disponíveis:¶ ellipsis-unicodeellipsis-unicode
space-ellipsisspace-ellipsis
quote-unicodequote-unicode
bullet-unicodebullet-unicode
keywordPalavra-chave adicional
Palavra-chave extra e opcional passada para xgettext usando –keyword.
presetPredefinição do Meson
Predefinição de argumento xgettext nativo que corresponde à integração com o gettext do Meson. A predefinição GLib adiciona as opções de palavra-chave e sinalizador de formato usadas pelo auxiliar gettext do Meson.
Escolhas disponíveis:¶ glibGLib
- Gatilhos:
Instalação de complemento, Manual trigger, Pós-atualização do repositório
Atualiza o modelo gettext usando as convenções xgettext do Meson.
Gerar arquivos MO¶
- ID do complemento:
weblate.gettext.mo- Configuração:
pathCaminho do arquivo MO gerado
Se não for especificado, o local do arquivo PO será usado.
fuzzyIncluir textos que necessitam de edição
Textos que necessitam de edição (fuzzy) normalmente não estão prontos para serem usados como traduções.
- Gatilhos:
Gera automaticamente um arquivo MO para cada arquivo PO alterado.
O local do arquivo MO gerado pode ser personalizada e o campo para ele usa Marcação de modelo.
Nota
Se uma tradução for removida, seu arquivo PO será excluído do repositório, mas o arquivo MO gerado por esse complemento não será. O arquivo MO deve ser removido manualmente do upstream.
Atualizar arquivos PO para corresponder ao POT (msgmerge)¶
Alterado na versão 5.13: Settings configuration has been moved to Parâmetros de formato de arquivo.
- ID do complemento:
weblate.gettext.msgmerge- Configuração:
Esse complemento não tem configuração.
- Gatilhos:
Atualiza todos os arquivos PO (conforme configurado por “File mask”) para corresponder ao arquivo POT (conforme configurado por “Modelo para novas traduções”) usando msgmerge.
This add-on is essential when working with gettext PO files where the POT (template) file is updated with new strings or changes to existing strings. When the POT file is updated in the repository, this add-on automatically merges those changes into all language PO files, ensuring that:
New translatable strings appear in all languages
Textos removidos são marcados como obsoletos
Modified strings are marked as needing review (fuzzy)
Most msgmerge command-line options can be set up through file format parameters configuration.
Atualizar arquivo POT (Sphinx)¶
Adicionado na versão 5.17.
- ID do complemento:
weblate.gettext.sphinx- Configuração:
intervalAtualizar frequência
Com que frequência o complemento deve atualizar o arquivo POT quando o componente for restaurado.
Escolhas disponíveis:¶ dailyDiário
weeklySemanalmente
monthlyMensal
normalize_headerNormalizar cabeçalho POT
Atualiza os cabeçalhos gettext e substitui os espaço reservado em comentários do POT.
filter_modeFiltragem
Opcionalmente, remove textos que não são úteis para traduzir após a extração de Sphinx.
Escolhas disponíveis:¶ noneNada
weblate_docsDocumentação do Weblate
- Gatilhos:
Instalação de complemento, Manual trigger, Pós-atualização do repositório
Atualiza o modelo gettext usando o construtor gettext do Sphinx sem carregar a configuração do projeto.
Atualizar arquivo POT (xgettext)¶
Adicionado na versão 5.17.
- ID do complemento:
weblate.gettext.xgettext- Configuração:
intervalAtualizar frequência
Com que frequência o complemento deve atualizar o arquivo POT quando o componente for restaurado.
Escolhas disponíveis:¶ dailyDiário
weeklySemanalmente
monthlyMensal
normalize_headerNormalizar cabeçalho POT
Atualiza os cabeçalhos gettext e substitui os espaço reservado em comentários do POT.
comment_modeComentários do código
Selecione se o xgettext deve extrair nenhum, todos ou apenas os comentários marcados com uma tag específica.
Escolhas disponíveis:¶ offNão extrair comentários
allExtrair todos os comentários
taggedExtrair comentários com tag
comment_tagTag do comentário
Tag passada para o xgettext para extração de comentários ao usar o modo de comentário taggeado.
checksVerificações do xgettext
Validação adicional do xgettext a habilitar para mensagens extraídas.
Escolhas disponíveis:¶ ellipsis-unicodeellipsis-unicode
space-ellipsisspace-ellipsis
quote-unicodequote-unicode
bullet-unicodebullet-unicode
keywordPalavra-chave adicional
Palavra-chave extra e opcional passada para xgettext usando –keyword.
input_modeFonte de entrada
Escolha se o xgettext deve ler os arquivos-fonte a partir de padrões glob ou de um manifesto POTFILES/POTFILES.in.
Escolhas disponíveis:¶ patternsPadrões de arquivo-fonte
potfilesManifesto POTFILES
languageLinguagem de xgettext
Linguagem de programação passado para o xgettext, por exemplo Python ou C.
source_patternsPadrões de arquivo-fonte
Padrões glob relativos ao repositório, separados por nova linha, para arquivos a serem extraídos com xgettext.
potfiles_pathCaminho de POTFILES
Caminho relativo ao repositório para POTFILES ou POTFILES.in. As entradas são resolvidas em relação à raiz do repositório. Se presente junto ao manifesto, POTFILES.skip exclui os arquivos listados da extração.
- Gatilhos:
Instalação de complemento, Manual trigger, Pós-atualização do repositório
Atualiza o modelo gettext usando xgettext nos arquivos-fonte selecionados.
Squash de commits git¶
- ID do complemento:
weblate.git.squash- Configuração:
squashSquash de commits
Escolhas disponíveis:¶ allTodos os commits em um só
languagePor idioma
filePor arquivo
authorPor autor
append_trailersAnexar linhas finalizadoras à mensagem do commit resultado de squash
As linhas finalizadoras são linhas semelhantes aos cabeçalhos de e-mail RFC 822, no final da parte livre de uma mensagem de commit, como “Co-authored-by: …’.
commit_messageMensagem de commit
Esta mensagem de commit será usada em vez das mensagens de commit combinadas a partir de commits após squash.
- Gatilhos:
Faz squash de commits Git antes de enviar alterações.
Dica
To avoid unnecessary conflicts, it is recommended to configure automatic receiving of upstream changes by webhooks or API, see Atualizando repositórios.
Commits Git podem ter squash feito antes de fazer o push das alterações em um dos seguintes modos:
Todos os commits em um só
Por idioma
Por arquivo
Por autor
As mensagens de commit originais são mantidas, mas a autoria é perdida a menos que Por autor seja selecionada ou a mensagem de commit seja personalizada para incluí-la.
As mensagens de commit originais podem opcionalmente ser substituídas por uma mensagem de commit personalizada.
Linhas finalizadoras (linhas de commits como Co-authored-by: …) podem opcionalmente ser removidas das mensagens de commit originais e anexadas ao final da mensagem de compromisso após um fazer squash. Isso também gera crédito com Co-authored-by: apropriado para cada tradutor.
Personalizar saída JSON¶
Alterado na versão 5.12: Evite espaços após separadores opção adicionada.
Removido na versão 5.13: Replaced by Parâmetros de formato de arquivo.
Redefinir repositório para o upstream¶
Adicionado na versão 5.17.
- ID do complemento:
weblate.hosted.reset- Configuração:
Esse complemento não tem configuração.
- Gatilhos:
Todas as noites, as alterações feitas no repositório Weblate serão descartadas.
Formatar o arquivo de propriedades Java¶
- ID do complemento:
weblate.properties.sort- Configuração:
case_sensitiveHabilitar a ordenação de chaves sensível a maiúsculas e minúsculas
- Gatilhos:
Formata e ordena o arquivo de propriedades Java.
Consolida quebras de linhas para Unix.
Formatação em maiúsculas de sequências de escape Unicode (caso estejam presentes).
Tira linhas em branco e comentários.
Ordena os textos pelas chaves.
Descarta textos duplicados.
Remoção de comentário obsoleto¶
- ID do complemento:
weblate.removal.comments- Configuração:
ageDias a serem mantidos
- Gatilhos:
Define um período de tempo até a remoção dos comentários.
Isso pode ser útil para remover comentários antigos que podem ter se tornado desatualizados. Use com cuidado, pois o fato de os comentários ficarem velhos não significa que tenham perdido sua importância.
Remoção de sugestão obsoleta¶
- ID do complemento:
weblate.removal.suggestions- Configuração:
ageDias a serem mantidos
votesLimite de votação
Threshold for removal. Leave empty to remove suggestions regardless of votes. This field has no effect with voting turned off.
- Gatilhos:
Define um período de tempo até a remoção de sugestões.
Pode ser muito útil em relação à votação em sugestão (vej Revisão por pares) para remover sugestões que não recebem votos positivos suficientes em um determinado período de tempo.
Atualizar arquivos RESX¶
- ID do complemento:
weblate.resx.update- Configuração:
Esse complemento não tem configuração.
- Gatilhos:
Atualiza todos os arquivos de tradução para corresponder ao arquivo base monolíngue do upstream. Textos não usados são removidos e novos são adicionados como cópias do texto fonte.
Dica
Use Limpar arquivos de tradução se você só quiser remover chaves de tradução obsoletas.
Webhooks do Slack¶
Adicionado na versão 5.12.
- ID do complemento:
weblate.webhook.slack- Configuração:
webhook_urlURL do Webhook
eventsAlterar eventos
- Gatilhos:
Envia notificação a um canal do Slack com base nos eventos selecionados.
Aviso
O conteúdo da notificação pode exibir tags HTML. Este é um problema conhecido que será resolvido em breve; ver https://github.com/WeblateOrg/weblate/issues/15056.
Dica
Para obter uma URL de webhook, siga as instruções na Documentação de Incoming Webhooks do Slack
Webhook¶
Adicionado na versão 5.11.
Alterado na versão 5.15: Compliance of the secret length with the specification is now validated.
- ID do complemento:
weblate.webhook.webhook- Configuração:
webhook_urlURL do Webhook
secretSegredo do webhook
O segredo do Webhooks padrão é uma string codificada em base64.
eventsAlterar eventos
- Gatilhos:
Envia notificações para serviços externos com base nos eventos selecionados, seguindo a especificação Standard Webhooks.
O conteúdo da requisição segue o esquema Weblate Messaging. A descrição OpenAPI também pode ser encontrada em /api/docs/. Exemplo de corpo de requisição:
{
"change_id": 99,
"action": "Translation changed",
"timestamp": "2019-08-24T14:15:22Z",
"target": "Nazdar svete!",
"old": "Nazdar!",
"source": "Hello, world",
"url": "/translate/project-slug/component-slug/cs/?checksum=46add148a53cab6f",
"author": "author-username",
"user": "user-username",
"project": "project-slug",
"component": "component-slug",
"translation": "cs"
}
Exemplo de corpo de requisição com categorias:
{
"change_id": 8910,
"action": "Component renamed",
"timestamp": "2025-06-11T07:15:09Z",
"target": ["new-name"],
"old": ["component-slug"],
"url": "/projects/project-slug/parent-category/child-category/sub-category/component-slug/",
"user": "testuser",
"project": "project-slug",
"component": "component-slug",
"category": [
"sub-category",
"child-category",
"parent-category"
]
}
Exemplo de cabeçalhos de requisição:
{
"webhook-id": "7f1c5477f6275a69af7b83236c20cb1a",
"webhook-timestamp": "1748505623.044281",
"webhook-signature": "v1,Ceo5qEr07ixe2NLpvHk3FH9bwy/WavXrAFQ/9tdO6mc="
}
A webhook-signature é uma lista separada por espaços de assinaturas HMAC geradas usando o texto secret, o payload da solicitação, o webhook-timestamp e o webhook-id. Isso garante a autenticidade e a integridade da solicitação do webhook.
The provided secret is a base64 encoded string between 24 bytes (192 bits)
and 64 bytes (512 bits). It can be prefixed with whsec_ for easy
identification.
Para verificar uma solicitação, você pode usar o método Webhook.verify da biblioteca standardwebhooks ou uma implementação da Standard Webhooks Specification (em português, “Especificação Padrão de Webhooks”).
Obsolete add-ons¶
Personalizar saída XML¶
Adicionado na versão 4.15.
Removido na versão 5.13: Replaced by Parâmetros de formato de arquivo.
Personalizar saída YAML¶
Removido na versão 5.13: Replaced by Parâmetros de formato de arquivo.
Parâmetros comuns de complementos¶
Mecanismos para tradução automática¶
|
Alibaba |
|
Amazon Translate |
|
Anthropic |
|
Apertium APy |
|
Tradutor IA da Azure |
|
Azure OpenAI |
|
Baidu |
|
CyrTranslit |
|
DeepL |
|
Glosbe |
|
Tradução avançada do Google Cloud |
|
Tradução básica do Google Cloud |
|
LTEngine |
|
LibreTranslate |
|
ModernMT |
|
MyMemory |
|
Netease Sight |
|
Ollama |
|
OpenAI |
|
SAP Translation Hub |
|
Systran |
|
Weblate |
|
Weblate Translation Memory |
|
Yandex |
|
Yandex v2 |
|
Youdao Zhiyun |
|
tmserver |
Formato de arquivo¶
|
XLIFF 1.2 com extensões Apple |
|
Arquivos de metadados da App Store |
|
Arquivo ARB |
|
Recurso de textos de Android |
|
Arquivo AsciiDoc |
|
Arquivo de legenda Advanced SubStation Alpha |
|
catkeys do Haiku |
|
Recurso do Compose Multiplatform |
|
Arquivo CSV |
|
Arquivo CSV com vários valores |
|
Arquivo CSV simples |
|
Arquivo texto DokuWiki |
|
Arquivo DTD |
|
Arquivo XML simples |
|
Arquivo Fluent |
|
Arquivo Format.JS JSON |
|
Arquivo JSON go-i18n v1 |
|
Arquivo JSON go-i18n v2 |
|
Arquivo TOML go-i18n |
|
arquivo JSON gotext |
|
Propriedades GWT |
|
Arquivo HTML |
|
Arquivo JSON i18next v3 |
|
Arquivo JSON i18next v4 |
|
Arquivo IDML |
|
Arquivo INI |
|
Arquivo Inno Setup INI |
|
Arquivo de linguagem Joomla |
|
Arquivo JSON |
|
Arquivo de estrutura JSON aninhada |
|
Textos de Laravel PHP |
|
Arquivo Markdown |
|
MDX file |
|
Arquivo texto MediaWiki |
|
Arquivo @draggable/i18n lang |
|
Recurso Kotlin para dispositivos móveis |
|
Arquivo JSON do Nextcloud |
|
Arquivo OpenDocument |
|
Textos de PHP |
|
Arquivo 1.2 de tradução XLIFF |
|
arquivo PO gettext |
|
Arquivo PO gettext (monolíngue) |
|
XLIFF 1.2 com complementos gettext |
|
Propriedades Java |
|
Arquivo RC |
|
Arquivo RESJSON |
|
Arquivo ResourceDictionary |
|
Arquivo de recurso .NET |
|
Arquivo Ruby YAML |
|
Arquivo de legenda SubRip |
|
Arquivo de legenda SubStation Alpha |
|
Textos do iOS |
|
Arquivo stringsdict |
|
Arquivo de legenda MicroDVD |
|
Arquivo TermBase eXchange |
|
Arquivo TOML |
|
Arquivo de tradução Qt Linguistic |
|
Arquivo texto simples |
|
Arquivo JSON WebExtension |
|
Arquivo WixLocalization |
|
XLIFF 1.2 com suporte transponível |
|
Arquivo de tradução XLIFF 2.0 |
|
Arquivo de tradução XLIFF 2.0 com suporte a objetos posicionáveis |
|
Excel Open XML |
|
XWiki Full Page |
|
XWiki Java Properties |
|
XWiki Page Properties |
|
Arquivo YAML |
Alterar eventos¶
|
Recurso atualizado |
|
Tradução concluída |
|
Tradução alterada |
|
Comentário adicionado |
|
Sugestão adicionada |
|
Tradução adicionada |
|
Traduzido automaticamente |
|
Sugestão aceita |
|
Tradução revertida |
|
Tradução enviada |
|
Texto fonte adicionado |
|
Componente bloqueado |
|
Componente desbloqueado |
|
Commit das alterações feito |
|
Alterações enviadas |
|
Redefinição do repositório |
|
Repositório mesclado |
|
Repositório rebaseado |
|
Falha na mesclagem do repositório |
|
Falha na rebase do repositório |
|
Falha na análise |
|
Tradução removida |
|
Sugestão removida |
|
Tradução substituída |
|
Falha ao enviar para o repositório |
|
Sugestão removida durante a limpeza |
|
Texto fonte alterado |
|
Texto adicionado |
|
Status em massa alterado |
|
Visibilidade alterada |
|
Usuário adicionado |
|
Usuário removido |
|
Tradução aprovada |
|
Marcada para edição |
|
Componente removido |
|
Projeto removido |
|
Projeto renomeado |
|
Componente renomeado |
|
Componente movido |
|
Colaborador entrou |
|
Novidade publicada |
|
Alerta acionado |
|
Idioma adicionado |
|
Idioma solicitado |
|
Projeto publicado |
|
Componente adicionado |
|
Usuário convidado |
|
Notificação de repositório recebida |
|
Arquivo de tradução substituído via upload |
|
Licença alterada |
|
Contrato de licença do colaborador alterado |
|
Captura de tela adicionada |
|
Captura de tela enviada |
|
Texto atualizado no repositório |
|
Complemento instalado |
|
Configuração do complemento alterada |
|
Complemento desinstalado |
|
Texto removido |
|
Comentário removido |
|
Comentário resolvido |
|
Explicação atualizada |
|
Categoria removida |
|
Categoria renomeada |
|
Categoria movida |
|
Falha ao salvar o texto |
|
Texto adicionado no repositório |
|
Texto atualizado via upload |
|
Texto adicionado via upload |
|
Tradução atualizada via upload da fonte |
|
Tradução de componentes concluída |
|
Verificação forçada aplicada |
|
Alteração propagada |
|
Arquivo enviado |
|
Marcadores extras atualizados |
|
Fonte enviada |
|
Fonte alterada |
|
Fonte removida |
|
Sincronização forçada de traduções |
|
Verificação forçada de traduções |
|
Captura de tela removida |
|
Etiqueta adicionada |
|
Etiqueta removida |
|
Limpeza do repositório |
|
Texto fonte adicionado no envio |
|
Texto fonte adicionado no repositório |
|
Project backed up |
|
Project restored |
|
Component restored |
|
User edit reverted |
|
Project setting changed |
|
Component setting changed |
Personalizando a lista de complementos¶
A lista de complementos é configurada por WEBLATE_ADDONS. Para adicionar outro complemento, basta incluir o nome absoluto da classe nesta configuração.
Escrevendo complementos¶
Você também pode escrever seus próprios complementos, criar uma subclasse de weblate.addons.base.BaseAddon para definir os metadados do complemento e, então, implementar um retorno de chamada para fazer o processamento.
Ver também
Escrevendo scripts para complementos¶
Complementos também podem ser usados para executar scripts externos. Isso costumava ser integrado ao Weblate, mas agora você precisa escrever algum código para envolver seu script com um complemento.
# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""Example pre commit script."""
from __future__ import annotations
from typing import ClassVar
from django.utils.translation import gettext_lazy
from weblate.addons.events import AddonEvent
from weblate.addons.scripts import BaseScriptAddon
class ExamplePreAddon(BaseScriptAddon):
# Event used to trigger the script
events: ClassVar[set[AddonEvent]] = {
AddonEvent.EVENT_PRE_COMMIT,
}
# Name of the addon, has to be unique
name = "weblate.example.pre"
# Verbose name and long description
verbose = gettext_lazy("Execute script before commit")
description = gettext_lazy("This add-on executes a script.")
# Script to execute
script = "/bin/true"
# File to add in commit (for pre commit event)
# does not have to be set
add_file = "po/{{ language_code }}.po"
Para instruções de instalação, consulte Custom quality checks, add-ons, automatic suggestions and auto-fixes.
O script é executado com o diretório atual definido para a raiz do repositório VCS para qualquer componente.
Além disso, estão disponíveis as seguintes variáveis de ambiente:
- WL_VCS¶
Sistema de controle de versão usado.
- WL_REPO¶
URL do repositório upstream.
- WL_PATH¶
Caminho absoluto para o repositório VCS.
- WL_BRANCH¶
Ramo do repositório configurado no componente atual.
- WL_FILEMASK¶
Máscara de arquivo para componente atual.
- WL_TEMPLATE¶
Nome de arquivo de modelo para traduções monolíngues (pode estar vazio).
- WL_NEW_BASE¶
Nome de arquivo do arquivo usado para criar novas traduções (pode estar vazio).
- WL_FILE_FORMAT¶
Formato de arquivo usado no componente atual.
- WL_LANGUAGE¶
Idioma da tradução processada atualmente (não disponível para ganchos de nível de componente).
- WL_PREVIOUS_HEAD¶
HEAD anterior após atualização (disponível apenas ao executar o gancho de pós-atualização).
- WL_COMPONENT_SLUG¶
Slug do componente usado para construir a URL.
- WL_PROJECT_SLUG¶
Slug do projeto usado para construir a URL.
- WL_COMPONENT_NAME¶
Nome de componente.
- WL_PROJECT_NAME¶
Nome do projeto.
- WL_COMPONENT_URL¶
URL do componente.
- WL_ENGAGE_URL¶
URL de engajamento do projeto.
Ver também
Processamento de repositório pós-atualização¶
Pode ser usado para atualizar arquivos de tradução quando a fonte VCS do upstream alterar. Para conseguir isso, lembre-se que o Weblate só vê arquivos dos quais se fez commit com o VCS, então você precisa fazer commit das alterações como parte do script.
Por exemplo, com Gulp, você pode fazê-lo usando o seguinte código:
#! /bin/sh
gulp --gulpfile gulp-i18n-extract.js
git commit -m 'Update source strings' src/languages/en.lang.json
Processamento pré-commit de traduções¶
Use o script de commit para alterar automaticamente uma tradução antes de fazer commit dela para o repositório.
Ele é passado como um parâmetro único que consiste o nome de uma tradução atual.
Registro de atividades complementares¶
O registro de atividades do complemento mantém o controle da execução do complemento e pode ser usado para acompanhar a atividade do complemento.
Os registros podem ser podados após um certo intervalo de tempo configurando o ADDON_ACTIVITY_LOG_EXPIRY.