Jump to content

Ajuda:Extensão:Translate/Inseríveis

From mediawiki.org
This page is a translated version of the page Help:Extension:Translate/Insertables and the translation is 95% complete.
Outdated translations are marked like this.

As cadeias de caracteres traduzíveis geralmente contêm marcações que devem ser mantidas como estão na tradução. Digitar tais marcações pode ser um processo lento e difícil, dado que caracteres especiais estão quase sempre presentes nelas. Um inserível (insertable) é um pedaço da marcação que é apresentado ao tradutor como um botão ou outro elemento da interface. Ao clicar no botão, esse pedaço de marcação é inserido na tradução, logo após a posição atual do cursor de texto nela.

Cada grupo de mensagens é capaz de ter uma InsertablesSuggester. Essa classe é responsável por gerar uma lista de Insertables. Cada Insertable é composto de três partes:

  1. # O que exibir ao usuário
  2. # O que inserir antes da posição do cursor de texto na tradução ou o que substituir no lugar do conteúdo selecionado.
  3. # O que inserir após a posição do cursor de texto na tradução

A extensão Traduzir vem com a MediaWikiInsertablesSuggester integrada nela. Sugestores para outros tipos de conteúdo podem ser encontrados no repositório Git do translatewiki.net.

Interface do usuário

Inseríveis exibidos na parte inferior da área de texto de tradução. Eles permitem um acesso rápido à inserção de pedaços de marcação que não variam entre idiomas.

Configuração

Aqui está um exemplo de mudança à configuração em um arquivo YAML,

INSERTABLES:
  # inserível pré-embalado
  - class: RegexInsertablesSuggester
    params: "/\$[a-zA-Z0-9]+/"
  # inserível personalizado
  - class: FreeColInsertablesSuggester

AUTOLOAD:
  FreeColInsertablesSuggester: Suggester.php

Insertáveis pré-fornecidos / empacotados

A seguir, uma lista de inseríveis empacotados.

HtmlTagInsertablesSuggester

Esse inserível exibirá sugestões para todas as tags HTML encontradas dentro da string de origem.

Por exemplo:

  • Mensagem: This <a href="abc">link</a>link takes you to the home page.
  • Sugeridor exibido: <a href="abc"></a>

MediaWikiInsertablesSuggester

Esse inserível exibirá várias sugestões para mensagens de wikitexto relacionadas ao MediaWiki. Isso inclui sugestões para,

  • Parâmetros como $1user que estão presentes nas mensagens de Ajuda da API.
  • PLURALS, GENDER, GRAMMAR
  • Sugestões de tags HTML.

NumericalParameterInsertablesSuggester

Esse inserível exibirá sugestões de parâmetros numéricos, como $1, $2, $3

RegexInsertablesSuggester

Esse inserível é um inserível de uso geral que pode ser usado para exibir sugestões com base em uma expressão regular personalizada.

Exemplo:

  # exemplo simples
  # combina e sugere $abc
  - class: RegexInsertablesSuggester
    params: "/\$[a-zA-Z0-9]+/"
  # exemplo complexo usando capturas nomeadas.
  # resultados [abc](ac) 
  # sugeridor exibido [](ac)
  - class: RegexInsertablesSuggester
    params:
      regex: /(?<pre>\[)[^]]+(?<post>\]\([^)]+\))/
      display: $pre $post
      pre: $pre
      post: $post

Descrição do parâmetro,

  • regex – A regex a ser usada para identificar insertables. Obrigatório.
  • display – O que mostrar ao usuário. Não obrigatório, o padrão é o valor correspondente.
  • pre – O que inserir antes da seleção ou substituir a seleção se post permanecer vazio Não obrigatório, o padrão é o valor correspondente.
  • post – O que inserir após a seleção. Não obrigatório, o padrão é o valor correspondente.

TranslatablePageInsertablesSuggester

Usado principalmente em páginas traduzíveis para fornecer um sugeridor para variáveis como $abc.

UrlInsertablesSuggester

Esse inserível localiza URLs (que normalmente não são alteradas nas traduções) e as sugere para inserção.

Adição de um inserível personalizado

Caso os inseríveis existentes não sejam suficientes para atender às suas necessidades, é possível adicionar inseríveis personalizados.

Aqui está um exemplo de compatibilização de inseríveis para um grupo de mensagens baseado em arquivo: FreeCol. O arquivo YAML foi reduzido por conveniência. As linhas adicionadas estão destacadas.

FreeCol.yaml:

---
BASIC:
  id: out-freecol
  label: FreeCol
  description: "A strategy game"
  namespace: NS_FREECOL
  class: FileBasedMessageGroup
 
FILES:
  class: JavaFFS
  sourcePattern: %GROUPROOT%/freecol/data/strings/FreeColMessages_%CODE%.properties
  definitionFile: %GROUPROOT%/freecol/data/strings/FreeColMessages.properties
  targetPattern: freecol/data/strings/FreeColMessages_%CODE%.properties

INSERTABLES:
  - class: FreeColInsertablesSuggester

AUTOLOAD:
  FreeColInsertablesSuggester: Suggester.php

Suggester.php:

class FreecolInsertablesSuggester {
	public function getInsertables( $text ) {
		$insertables = array();

		$matches = array();
		// Localizar variáveis do formato %name%
		// Essa é a mesma expressão regular usada em Checker.php
		preg_match_all( '/%[a-zA-Z_]+%/', $text, $matches, PREG_SET_ORDER );
		$new = array_map( function( $match ) {
			// $match[0] é uma correspondência completa, e não temos nenhuma submatch aqui
			// Como queremos que o cursor esteja no final da inserção, colocamos tudo no campo "pre".
			return new Insertable( $match[0], $match[0] );
		}, $matches );

		return $insertables;
	}
}

Os parâmetros à Insertable são:

class Insertable {
        /**
         * @param string $display O que mostrar ao usuário
         * @param string $pre O que inserir antes da seleção ou substituir a seleção se $post permanecer vazio
         * @param string $post O que inserir após a seleção
         */
        public function __construct( $display, $pre = '', $post = '' ) {
                $this->display = $display;
                $this->pre = $pre;
                $this->post = $post;
        }
[...]
}