Utilizador:He7d3r/Tools/LanguageConverter

Wikisource, a biblioteca livre
Saltar para a navegação Saltar para a pesquisa


Este script permite a conversão entre idiomas e/ou suas variantes. No Wikisource lusófono, é usado especificamente para realizar a conversão entre a ortografia de um texto antigo e a ortografia atual da língua portuguesa (tanto a variante usada em Portugal quanto a do Brasil).

Configurando o script[editar]

Dependendo do objetivo para o qual o script for utilizado, e dos idiomas nos quais for habilitado, é necessário fazer algumas configurações para que ele funcione como desejado. Para isso, é utilizado o objeto window.LanguageConverter.config, no qual são colocadas uma ou mais das seguintes configurações:

  • msg: um objeto que reúne as mensagens da interface.
    • error_missing_dict: texto exibido quando o dicionário não for encontrado
    • error_missing_dict_name: texto exibido caso não seja definido o nome de um dos dicionários
    • error_word_processing: texto exibido no caso de ocorrer um erro ao processar determinada palavra
    • error_word_processing: texto exibido no caso de ocorrer um erro ao processar determinada conversão tipográfica
    • help_page_link: texto exibido no link para a página de ajuda sobre o conversor, caso ela tenha sido definida através de help_page.
    • show_changes_link texto do link que mostra as alterações realizadas
    • hide_changes_link texto do link que oculta as alterações realizadas
  • word_chars: define o conjunto de caracteres que formam o alfabeto do idioma da wiki em que o script será usado;
  • typo_changes: objeto que no qual são definidas as conversões tipográficas realizadas em cada variante/idioma;
  • ws_error: define as mensagens de erro exibidas caso ocorra algum problema ao executar o script;
  • ns_list e selection_mode: definem em que páginas o sistema estará habilitado.
    • ns_list indica um ou mais espaços nominais da wiki em que o script será usado.
    • selection_mode: define como é feita a seleção das páginas nas quais o sistema estará habilitado. Os valores possíveis são "OR" e "AND";
    • Combinações possíveis
      • Todas as páginas de quaisquer espaços nominais
      • Apenas as páginas que forem marcadas com a {{Modernização automática}}
      • Todas as páginas dos espaços nominais indicados
      • Todas as páginas dos espaços nominais indicados e também todas aquelas que forem marcadas com a {{Modernização automática}}
      • Apenas as páginas dos espaços nominais indicados que estiverem marcadas com a {{Modernização automática}}
  • local_dic_id: define os atributos id usados nos elementos HTML da {{Modernização automática}} para cada variante;
  • no_conversion_class: define a classe usada para evitar a conversão do texto dos elementos HTML que forem marcados;
  • global_dic_page: define as páginas da wiki em que são mantidos os dicionários nos quais a conversão é baseada;
  • variants_list: define os idiomas e/ou suas variantes em que a conversão é permitida;
  • show_changes: define se as expressões convertidas devem ser marcadas pelo script com uma classe que possa ser destacada usando CSS;
  • max_seq: define o número máximo de palavras consecutivas (separadas por espaços) que podem formar uma expressão que seja aceita pelo script;
  • help_page: define em que página do projeto está disponível ajuda sobre o sistema de conversão. Se for definida juntamente com help_page_link, será adicionado um link ao menu (cujo texto será help_page_link), apontando para a página de ajuda;
  • show_menu_title: define se o nome da variante atual deve ser exibida no título do menu de seleção.

Sugestões de aprimoramentos[editar]

  • Permitir escolher se será exibido o título do menu de conversões, para reduzir os problemas com telas menores, nas quais os novos menus do topo se sobrepõe com "Ler", "Editar", etc... Yes check.svg Feito Outras opções seriam:
    • Definir nomes mais curtos, ou mostrar somente as bandeiras no menu, ou ainda, adotar a estratégia da commons:Template:Ls colocando uma caixa de seleção logo abaixo do título das páginas em que o script for habilitado;
    • Mover os links novamente para a barra lateral (como no Wikisource francês), tornando-o diferente do LanguageConverter do MediaWiki;
  • Conferir e corrigir possível bug que parece impedir a conversão de certas sequências de palavras;
  • Definir a melhor forma de realizar a "localização" do script (provavelmente um objeto redefinido em cada idioma, cujas propriedades sejam os nomes das mensagens e coisas do gênero)
  • Permitir que seja escolhido um "idioma padrão" de modo que (ver comentário no Wikisource Norueguês):
    • Haja apenas uma opção "modernizar" que realizará a modernização para a variante que o leitor tiver definido em suas preferências; ou
    • Tudo seja convertido ao carregar a página sem ter que clicar no menu;
      • Parece resolvido agora que se usa um cookie para guardar no navegador a última variante que foi utilizada para que ela seja usada novamente ao mudar de página;
  • Tornar possível usá-lo para converter o conteúdo da caixa de edição (poderia ser útil para traduções/modernizações)
  • Permitir a indicação de conversões em locais específicos com algo do tipo <span class="only-default" title="<expressão portuguesa> (em Portugal) e <expressão brasileira> (no Brasil)">expressão original</span><span class="only-PT">expressão portuguesa</span><span class="only-BR">expressão brasileira</span> que estaria em uma predefinição para permitir {{Variações|expressão original|pt-PT=expressão portuguesa atual|pt-BR=expressão brasileira atual}}. Ver também m:Meta:Language select, commons:Template:Ls (aprimoramento de m:Template:Ls) e commons:MediaWiki:Multilingual description.js.
    • As classes "only-XX" teriam "display:none" por padrão, estando visíveis apenas para quem definisse uma variante ou quem sabe nos 'tooltips'.
  • Considerar troca da abordagem usada na parte central do script para que ele use a regra "a maior string tem precedência", como no LanguageConverter do MediaWiki (isso traria vantagens para a inclusão de variações de uma palavra (plurais, conjugações dos verbos, etc...)
    • Provavelmente precisaria usar uma função strtr análoga à existente em PHP (ou talvez à preg_replace, no caso de se tentar usar ambas as abordagens. Ver também dicas na zh.wp);
    • Isso possibilitaria a conversão de expressões em que aparecem parêntesis, como "Rato (informática): Mouse"
    • Uma vez alterada a abordagem, pode-se considerar a possibilidade de oferecer suporte ao uso de expressões regulares nos dicionários (conforme sugerido aqui), ou em um dicionário a parte, editável apenas por admins (por questões de segurança), ou no próprio script de modo similar ao que se faz atualmente com a variável "ws_typo".
      • Isso reduziria o número de regras necessárias para incluir certas conversões
      • Poderia ser menos eficiente do que substituições simples (confirmar).

Implementadas[editar]

  • Criar mecanismo semelhante à sintaxe do conversor de idiomas do MediaWiki que permite -{marcar determinado texto que não deve ser convertido}-. Possivelmente, será usado algum elemento HTML com uma classe que será detectada pelo script (cujo nome poderá ser personalizado conforme a wiki).
    • Basta adicionar a classe definida na opção no_conversion_class a um elemento e seu conteúdo não será convertido.
  • Adicionar link para uma página de ajuda de cada wiki (isto seria definido por "idioma do conteúdo") Yes check.svg Feito
  • Fazer melhor uso de programação orientada a objetos, escopos etc... Yes check.svg Feito
  • Adicionar um link para mostrar/ocultar conversões (que irá adicionar/remover a classe usada ao elemento bodyContent)
    • Trocar Ids por classes, como em var x = document.getElementById('bodyContent'); x.className += ' <nova classe>'; Yes check.svg Feito
  • Implementar algum sistema de fallbacks para:
    • Quando não for especificada a tradução de uma variável, usar a versão em inglês como substituta; Yes check.svg Feito
    • Permitir que um dos dicionários seja "complementar" ao dicionário "principal", sobrescrevendo apenas as regras de conversão que forem distintas entre as variantes do idioma. Yes check.svg Feito
      • Evitaria duplicação de regras idênticas entre os dicionários;
      • Seria preciso obter uma página a mais através da API do MediaWiki (talvez tornando-o mais lento); A API aceita vários títulos em uma única chamada, separados por uma barra vertical "|".

Histórico[editar]

Para checar qual a versão do script que está em execução em uma página na qual ele esteja ativado, coloque o seguinte código na barra de endereços:

javascript:alert(LanguageConverter.version)
Versão 2.x
  • 2.15: Substituição de algumas funções de configuração por uma equivalente em jQuery (reduzindo o tamanho do código)
  • 2.5: Correção para que o conteúdo de tags <span class="v-...">...</span> criadas pelo script não seja convertido (excedia o limite de profundidade na recursão feita pela lc.conv_node_from_dic)
  • 2.4: Correção de problema com dicionários externos
  • 2.3: Uso de um cookie para guardar a última variante selecionada
  • 2.2: Adição de suporte ao uso de vários dicionários para cada variante/idioma (por exemplo para ter um dicionário principal e outro(s) secundário(s) para regras de algum tipo específico)
  • 2.1: Adição de suporte ao uso de dicionários mantidos em outros wikiprojetos
  • Melhor uso de objetos JavaScript e closures
  • Uso de jQuery em alguns lugares;
  • Adição de link para uma página de ajuda (por wikiprojeto)
  • Melhor suporte à criação de dicionários locais em páginas específicas;
  • Otimização de algumas partes e correção de alguns bugs;
  • Melhoria no suporte à conversão de expressões com mais de uma palavra;
  • Adição de parâmetro para personalizar o conjunto de páginas em que o script deve ser habilitado (por espaços nominais e/ou marcação de páginas individualmente);
  • Adição de suporte aos //comentários no fim das linhas do dicionário;
  • Expansão dos conjuntos de caracteres aceitos (os "alfabetos" usado pelo script);
  • Adição de "spinner" durante a conversão;
  • Melhoria na documentação interna do script seguindo convenções do JSDoc;
  • Adição de tratamento de erros ao realizar a conversão de cada expressão;
  • Suporte a vários idiomas e variantes (francês, norueguês, português e galego);
  • Uso do parâmetro "variant" na URL para definir a variante do português para a qual deve ser feita a conversão;
  • Adoção dos menus no topo como no conversor de idiomas do MediaWiki;
  • Adição de spans em torno do texto convertido, para facilitar a visualização das mudanças ("diff" básico);
  • Tradução e adição de suporte básico para o português brasileiro;
Versão 1.0, criada pelo ThomasV

Onde ele é usado?[editar]

Aqui no Wikisource lusófono, o script está ativo em todas as páginas que incluem a {{Modernização automática}}.

Se estiver usando o script em outro projeto, adicione o seguinte comentário, para que ele apareça na lista de uso global do script:

// [[File:User:He7d3r/Tools/LanguageConverter.js]] (workaround for [[phab:T35355]])

ou acrescente abaixo seu nome e uma ligação para a página correspondente, assim poderá ser avisado no caso de atualizações:

Script Usuário
w:MediaWiki:Gadget-LanguageConverter.js Quaisquer wikipedistas
b:MediaWiki:Gadget-LanguageConverter.js Quaisquer wikilivristas
w:es:User:Eduardo_P/vector.js Eduardo P
no:User:V85/vector.js V85
no:User:Anjar/vector.js Anjar