Jump to content

Ajuda:Extensão:Traduzir/Configuração de grupo

From mediawiki.org
This page is a translated version of the page Help:Extension:Translate/Group configuration and the translation is 100% complete.

Há várias maneiras de adicionar grupos de mensagens à extensão Translate. Os grupos de mensagens são coleções de mensagens. Normalmente, eles se comparam a um módulo em um software e a um arquivo (e geralmente um por idioma para traduções). Também é possível criar grupos que incluam mensagens de outros grupos de mensagens. Por exemplo, pode haver um grupo que inclua todas as mensagens em um determinado software. Os grupos também podem incluir apenas subconjuntos de mensagens, como as mensagens mais importantes do MediaWiki que devem ser traduzidas primeiro. Esses grupos de nível superior não são mapeados diretamente para arquivos em nenhum formato específico, mas, como todos os grupos, podem ser exportados no formato Gettext para uso em outras ferramentas de tradução.

Os grupos de mensagens são os blocos de alto nível com os quais os tradutores interagem: para escolher uma mensagem na qual trabalhar, eles precisam primeiro selecionar um grupo, a menos que estejam usando a pesquisa de tradução. Para cada grupo, podemos coletar estatísticas e cada grupo tem um identificador exclusivo. Naturalmente, as mensagens são os menores blocos de texto que os tradutores traduzem um de cada vez. Cada mensagem também tem um identificador, que geralmente é chamado de "chave". A chave não precisa ser única em todos os grupos de mensagens.

Formato de configuração de grupo padrão

É fácil adicionar grupos de mensagens usando o formato YAML. Tudo o que você precisa fazer é definir um namespace e adicionar um arquivo de configuração a $wgTranslateGroupFiles; consulte a página configuration para obter mais detalhes. Exemplo:

wfAddNamespace( 1218, 'FUDforum' );
$wgTranslateGroupFiles[] = "$IP/messagegroups/FUDforum/FUDforum.yml";

O arquivo em si usa a sintaxe YAML. A sintaxe em si não é descrita aqui, mas é fácil de aprender, e todos os grupos predefinidos podem ser usados como exemplos. Lembre-se de usar espaços em vez de tabulações para o recuo. Cada arquivo pode definir vários grupos de mensagens. Cada definição de grupo é separada por uma linha com três traços, que é o separador de documentos padrão em YAML.

As definições são divididas em alguns itens de nível superior: BASIC, FILES, MANGLER, VALIDATORS, INSERTABLES, TAGS, AUTOLOAD, LANGUAGES e TEMPLATE especial. Alguns grupos personalizados podem adicionar mais itens de nível superior. Nem todos os grupos precisam definir todos eles.

Matemática básica Esta seção contém informações básicas sobre o grupo, como ID e nome exclusivos. Lista de chaves possíveis (as chaves obrigatórias estão marcadas com *):

Chave Descrição
namespace* ID do namespace, constante ou cadeia de caracteres onde as mensagens são armazenadas. O namespace deve ser adicionado previamente. Veja o exemplo acima.
icon Ícone do grupo de mensagens. Pode suportar qualquer arquivo que o MediaWiki possa manipular e que seja carregado no MediaWiki. Também suporta arquivos de repositórios de mídia compartilhada.
id* ID exclusivo que identifica esse grupo de mensagens.
label* Nome legível por humanos desse grupo de mensagens.
description Descrição desse grupo de mensagens. É usada a sintaxe completa do wiki.
class* O tipo desse grupo de mensagens - geralmente FileBasedMessageGroup ou AggregateMessageGroup.
meta Vários usos. Se houver chaves de mensagem idênticas para grupos de mensagens diferentes (geralmente no caso de grupos de mensagens de ramificação ou subconjunto), somente um grupo poderá ser primário e os outros grupos deverão ter meta com valor de yes.
sourcelanguage Código de idioma do idioma de origem. O padrão é en (inglês).
codeBrowser Usado somente no formato Gettext. Padrão de URL de um visualizador on-line para o(s) arquivo(s) do repositório, em que %FILE% e %LINE% serão substituídos pelo caminho do arquivo e pela linha relevantes - conforme declarado nos comentários dos arquivos PO de uma mensagem - para fornecer aos tradutores um link informativo dentro dos auxílios à tradução para essa mensagem. Exemplo: https://github.com/lonvia/waymarked-trails-site/blob/master/django/%FILE%#L%LINE%
support Configura para onde o botão "Pedir ajuda" redirecionará o tradutor. Você deve especificar url ou page e, opcionalmente, params para configurar os parâmetros de URL. Nos parâmetros, você pode usar %MESSAGE% como um espaço reservado para o nome da mensagem.

Exemplo:

BASIC:
  id: out-freecol
  label: FreeCol
  icon: wiki://Freecol.png
  description: "{{int:bw-desc-freecol}}"
  namespace: NS_FREECOL
  class: FileBasedMessageGroup
  support:
    url: 
    params:
      title: "Translation issue with message %MESSAGE%"
      body: "[**URL**](https://translatewiki.net/wiki/%MESSAGE%)"

ARQUIVOS

Esta seção descreve o layout do sistema de arquivos e o formato dos arquivos de mensagens para grupos do tipo FileBasedMessageGroup. Lista de chaves possíveis (as chaves obrigatórias são marcadas com *):

Chave Descrição
format* Formato dos arquivos de mensagem. Exemplos: Yaml, Java, FlatPhp (para obter uma lista completa, consulte FORMATS em FileFormatFactory.php).
class Classe que define o formato dos arquivos de mensagem. Descontinuado no Translate 2023.07 em favor de format.
codeMap Lista de códigos de idioma que diferem dos usados no MediaWiki. Use o código de idioma do MediaWiki como chave e o código do idioma de destino como valor.
sourcePattern* Onde encontrar arquivos de mensagens. há suporte para Variáveis de caminho.
targetPattern Como os arquivos exportados são nomeados em relação ao diretório de exportação. há suporte para Variáveis de caminho.
definitionFile Use isso para definir o local do arquivo de definição (com as mensagens de origem em inglês) se ele não estiver de acordo com o sourcePattern. há suporte para Variáveis de caminho.
Apple Teclas específicas do formato
header Comentário de cabeçalho de arquivo personalizado.
FlatPhp Teclas específicas do formato
header Cabeçalho de arquivo personalizado. Se não for fornecido, o padrão é <?php
Gettext Teclas específicas do formato
CtxtAsKey Modo especial em que o ctxt é usado como chave de mensagem. Não deve ser usado para arquivos Gettext normais.
header Comentário de cabeçalho de arquivo personalizado.
keyAlgorithm Valores permitidos: legacy e simple. Padrão: simples. Simple fornece chaves de mensagem mais curtas.
Java Teclas específicas do formato
header Comentário de cabeçalho de arquivo personalizado.
keySeparator O caractere que separa a chave e o valor. O padrão é =, mas também pode ser :.
Json Teclas específicas do formato
nestingSeparator O caractere que separa os níveis quando os objetos aninhados são achatados e introduzem uma cadeia de caracteres chave. Por padrão, o achatamento não é feito. Exemplo: { "top": { "nested": "content" } } é convertido em uma mensagem (assumindo / como separador) com a chave top/nested e o valor content.
includeMetadata Se deve incluir a chave @metadata com informações do autor nos arquivos exportados. O padrão é true.
parseCLDRPlurals Se deve analisar as palavras-chave de plural do CLDR. O padrão é false.
Yaml Teclas específicas do formato
codeAsRoot Se definido como 1, todas as mensagens estarão em um código de idioma (em vez de na raiz).
nestingSeparator O caractere que separa os níveis quando os objetos aninhados são achatados e introduzem uma cadeia de caracteres chave. O valor padrão é .. Exemplo: $example é convertido (assumindo . como separador) em uma mensagem com a chave $key e o valor $content.
parseCLDRPlurals Se deve analisar as palavras-chave de plural do CLDR. O padrão é false.

As variáveis de caminho são:

Variável Descrição
%CODE% Código do idioma (afetado por codeMap)
%MWROOT% Caminho para a instalação do MediaWiki
%GROUPROOT% Definido por $wgTranslateGroupRoot.
%GROUPID% ID do grupo de mensagens

Exemplo:

FILES:
  format: Java
  sourcePattern: %GROUPROOT%/commonist/messages_%CODE%.properties
  targetPattern: commonist/messages_%CODE%.properties

MANGLER

Mangler é uma maneira de combinar chaves de mensagens para evitar chaves de mensagens conflitantes em vários grupos:

Chave Descrição
class* Que tipo de mangler usar. Exemplo: StringMatcher
StringMatcher Chaves específicas da classe
patterns* Lista de padrões. "*" pode ser usado como um curinga.
prefix* Se os padrões acima corresponderem a uma mensagem, a chave da mensagem será prefixada com esse prefixo.

Exemplo:

MANGLER:
  class: StringMatcher
  patterns:
    - "*"

VALIDADORES

Essa seção permite definir validators predefinidos ou personalizados.

VALIDATORS:
  # validador predefinido
  - id: InsertableRegex
    enforce: true
    insertable: true
    params: /\$[a-z0-9]+/
  # validador personalizado
  - class: MyCustomValidator
    enforce: true

AUTOLOAD:
  MyCustomValidator: Validator.php

INSERTABLES

Esta seção permite definir uma classe que sugere insertables ou usar insertables predefinidos. As classes podem ser carregadas automaticamente, conforme descrito na seção AUTOLOAD.

INSERTABLES:
  # inserível predefinido
  - class: HtmlTagInsertablesSuggester
  # inserível personalizado
  - class: FreeColInsertablesSuggester

AUTOLOAD:
  FreeColInsertablesSuggester: Insertable.php

TAGS =

É possível atribuir tags a mensagens. Cada tag recebe uma lista de chaves de mensagem (após a manipulação). * pode ser usado como curinga. Há suporte para as seguintes tags:

Chave Descrição
optional Essas mensagens não são exibidas por padrão e não contam como mensagens não traduzidas ao calcular as porcentagens de tradução.
ignored Essas mensagens não são exibidas de forma alguma.

Exemplo:

TAGS:
  optional:
    - lang_locale
    - lang_dir
  ignored:
    - charset

CARREGAMENTO AUTOMÁTICO

Esse item recebe como valores uma lista de nomes de classes com nomes de arquivos. Dessa forma, as classes personalizadas podem ser agrupadas facilmente com seus grupos de mensagens personalizados. O caminho deve ser relativo ao local do próprio arquivo de configuração do grupo.

Exemplo:

AUTOLOAD:
  ShapadoMessageChecker: Checker.php

MODELO ==

Há um atalho útil se você estiver definindo vários grupos de mensagens semelhantes. Para evitar repetições, faça com que a primeira definição comece com essa chave. Você pode usar quaisquer outras chaves de nível superior como subchaves para esse item. Todos os outros grupos usarão essas definições como valores padrão. É claro que cada grupo pode substituir o valor padrão do modelo.

Exemplo:

TEMPLATE:
  BASIC:
    namespace: NS_SHAPADO
    class: FileBasedMessageGroup
    description: "{{int:bw-desc-shapado}}"

  FILES:
    format: Yaml
    codeAsRoot: 1
    codeMap:
      be-tarask: be-TARASK

GRUPOS (para classes de AggregateMessageGroup)

Essa chave recebe apenas a lista de IDs de grupo que compõem esse grupo de mensagens.

Exemplo:

GROUPS:
  - out-shapado-ads
  - out-shapado-announcements
  - out-shapado-answers
  - out-shapado-badges

Há suporte para caracteres curinga. Nesse caso, o grupo agregado não se incluirá recursivamente, mesmo que corresponda a um padrão. Exemplo:

GROUPS:
  - out-shapado-*

Os curingas podem ser problemáticos se você tiver grupos agregados aninhados, porque alguns grupos podem ser incluídos várias vezes: diretamente e por meio dos grupos agregados incluídos.

IDIOMAS

Essa chave permite permitir ou não a tradução para idiomas específicos do grupo. A tradução para idiomas não permitidos será bloqueada.

LANGUAGES:
  include:
    - en
  exclude:
    - he
    - or
Atenção Atenção: MLEB 2021.10: A configuração abaixo não é mais suportada
LANGUAGES:
  whitelist:
    - en
  blacklist:
    - he
    - or

As entradas permitidas ("include") substituem quaisquer valores na lista de não permitidos ("exclude"). Se uma entrada permitida for *, isso significa que todos os idiomas são permitidos. A lista de permitidos também é opcional.

Grupos de mensagens para mensagens de interface específicas de sua wiki

Exemplo de grupo de mensagens para interface de usuário personalizada do wiki, por exemplo, para barra lateral localizada. Adicione o código a seguir em seu LocalSetting.php e substitua wikiname por algo significativo.

$wgHooks['TranslatePostInitGroups'][] = function ( &$list, &$deps, &$autoload ) {
	$id = 'wiki-custom';
	$mg = new WikiMessageGroup( $id, 'wikiname-messages' );
	$mg->setLabel( 'Wikiname User Interface Messages' );
	$mg->setDescription( 'This group contains user interface messages used on Wikiname.' );
	$list[$id] = $mg;
};


Atalho para extensões do MediaWiki

Consulte units group for MediaWiki.