Ajuda:Extensão:Traduzir/Configuração de grupo
- Como traduzir
- Melhores práticas
- Estatísticas e relatórios
- Garantia de qualidade
- Estados de grupo de mensagens
- Tradução off-line
- Glossário
Administradores de tradução
- Como preparar uma página para tradução
- Administração de tradução de páginas
- Tradução de elementos não estruturados
- Gerenciamento de grupo
- Move translatable page
- Import translations via CSV
- Working with message bundles
Administradores e desenvolvedores
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
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.