Extension:Translate/Mass migration tools/pt-br

Esboço do projeto
A extensão do MediaWiki Translate tem um recurso de tradução de páginas, que permite a tradução estruturada das páginas wiki. Isso torna a tarefa de tradução mais fácil, fornecendo uma interface amigável que consiste em cadeias de texto divididas em unidades de tradução. Conteúdo não-traduzível (por exemplo, imagens) é excluído do processo de tradução. Embora isso torna o trabalho mais fácil com um rico editor que suporta vários idiomas, um grande esforço é necessário para preparar a página para tradução, ou seja, a página em questão em primeiro lugar precisa ser convertida para um formato que seria reconhecido pela extensão Translate. O processo de preparação da página para tradução precisa levar em consideração diversas marcações, o que acaba se tornando uma tarefa tediosa quando feito manualmente. Além disso, wikis têm uma grande quantidade de conteúdo legado que ainda precisa ser preparada para tradução.

Assim, com essa motivação, o projeto tem como objetivo facilitar a conversão e, assim, economizar tempo manual e esforço. A ferramenta desenvolvida, portanto, tornaria a página traduzível, e uma vez que isso é feito, importaria as traduções (que estavam presentes antes que a página se tornar traduzível) para a extensão Translate. Assim, todo o processo de importação de traduções, que envolveu uma quantidade significativa de esforço manual fica automatizada por este projeto.

Bug no Bugzilla

 * Questão geral: Bug #46645
 * Tickets para o projeto: (por prioridade)
 * Ajude com os testes e forneça um feedback
 * Use http://pagemigration.wmflabs.org
 * Reporte um bug:
 * Vigie esta página e |comente na página de discussão

Tópico na lista de discussão
Anúncio no Wikitech-l

Participação
O IRC tem sido sempre a minha primeira opção sempre que eu estou preso em alguma coisa. Nunca hesite em fazer perguntas, no entanto, elas podem ser tolas. Eu estaria disponível no IRC com o apelido BPositive em canais como #mediawiki, #mediawiki-i18n, #wikimedia-dev. Também estou inscrito em listas de endereços diferentes, tais como wikitech-l, mediawiki-i18n, translators-l, Mediawiki-India e eu gostaria de receber todas as discussões relacionadas com o meu projeto a ser desenvolvido nos canais de IRC acima mencionados e listas de discussão.

Tenho um blog onde posso atualizar todo o progresso do meu projeto proposto. Também gostaria de escrever relatórios semanais/mensais no próprio MediaWiki para manter a comunidade atualizada sobre o projeto.

Abordagem
O projeto visa a criação de uma ferramenta que irá funcionar essencialmente como segue:

Passo 1: Deixe a página traduzível: Isso envolve
 * 1) A obtenção o texto de origem bruto da página em questão. Isto pode ser feito utilizando a API de análise
 * 2) A remoção da predefinição , se presente, e a adição da tag   no topo da página
 * 3) A adição das tags  .....
 * 4) A conversão dos vários elementos em seus equivalentes traduzíveis como por  exemplos de marcação. (Basicamente, para abreviar, este passo da ferramenta converteria o manual de documentos em código, de acordo com o meu entendimento)
 * 5) A adição de   para todas as Categorias
 * 6) Uma vez que todas as mudanças necessárias foram feitas, a página em questão seria salva com o texto atualizado, após a confirmação do usuário.

A página agora está pronta para tradução. O usuário pode marcar a página para a tradução agora, após o qual a extensão Translate irá realizar o seu trabalho de dividi-la em unidades de tradução.

Passo 2: Importe as traduções: Isso envolve
 * 1) A obtenção da lista de idiomas nos quais existe a tradução para a página em questão
 * 2) Para cada um dos idiomas:
 * 3) Pegue a versão mais recente da página antes da edição do bot FuzzyBot
 * 4) Copie as traduções presentes naquela unidade versão por unidade para a extensão Translate. Isso pode ser feito através da comparação dos comprimentos, verificando se a string contém links que apontam para a mesma página. Isso indicaria uma correspondência e uma série de caixas de seleção e/ou slides de correspondência mapeamento podem ser fornecidos ao usuário. Outra maneira de fazer isso seria a de traduzir o texto em Inglês usando uma interface de tradução automática fornecido pela extensão Content Translation e compará-lo com a versão traduzida que temos. Desempenho, precisão e facilidade de uso serão os fatores decisivos. Veja também /Design/.
 * 5) Crie a página correspondente do formato   e salve-a.

Ao final desta etapa, as traduções foram importadas para a extensão Translate.

Cada uma destas sub-etapas implicaria considerar várias possibilidades e casos de restrições, que seriam tratadas no decorrer do projeto.

Entregas

 * Ainda mais refinado em /Requirements/


 * Usuário do sistema: Administrador de tradução


 * 1) The Migration Tool: The tool would do the backend work, as mentioned above in 'The approach' section. This can be implemented -
 * 2) As a server side PHP script: If implemented as a PHP script, the tool would be called as the 'MigrationBot', and all the edits would be thus saved under the bot's name. The script would be a part of the Translate Extension code base. This has the advantage of best access to data, but at the same time has the drawbacks of difficulty in deployment and delay in testing.
 * 3) As a JavaScript gadget: If developed as a JS gadget, the edits would be made under the user's account. This has the advantage of easy access to data. Deployment and testing would be faster compared to the first method.
 * 4) A user interface asking for confirmation, showing the changes done in "Step 1 - Preparing the page for translation". This can be accomplished by:
 * 5) Simply re-offering the editing window to the user. The user would review the changes done and save the text using the "Save Page" button
 * 6) Offering the editing window integrated with some syntax highighting editor like CodeEditor. This would make the job of a TA easier by highlighting the changes made by the tool
 * 7) A series of confirmation dialogs showing each step performed by the tool. Though this would make it easier for the user to review the changes, it can get annoying at times. Plus, verifying each of the sub-tasks performed and then combining would make the otherwise simple task complicated
 * 8) A user interface asking for confirmation for the imported translations in "Step 2". The interface would aim at eliminating the tab switching + copy-pasting task and thereby would have the source language text and the target language text besides each other with "Yes" and "No" buttons.
 * 9) Upon selecting "Yes", the imported translation would be saved by creating the corresponding page
 * 10) Upon selecting "No", the blocks on the right hand side would be allowed to split or drag and drop to match the corresponding blocks.

Use Cases
The following events would occur during migration of the page:
 * 1) The tool would be invoked in one of the following ways:
 * 2) Placing a link under the "Tools" section in the left hand side panel
 * 3) Providing a button in the editing window
 * 4) Confirmation screens for step 1 would be shown
 * 5) The user would confirm the changes made in the text and then mark the page for translation
 * 6) The Translate extension would split it into translatable units
 * 7) Upon confirming the splitted units clicking the "Save page" button, one of the following will occur:
 * 8) The step 2 would be triggered and imports will commence
 * 9) A dialog box saying something like, "It seems this page already had some translations. Do you want to import them to this system now?" would be shown. If 'Yes', the imports will commence and if 'No', a link under Tools would be added for access in the future (or a message at the top of the page in).
 * 10) Confirmation screen(s) for step 2 would be shown

The same has been depicted in the sequence diagram below:

If time permits
If things go as planned and I still have some time, I would be completing one or more of the following task(s):
 * 1) Implementing an automatic feedback system for the second part of the project. A database would be created, which would store user feedback on how they think the tool should have detected the unit correctly. This feedback would help in tweaking the detection algorithm for step 2.
 * 2) Allow the imported translations to be corrected in the confirmation screen itself by making them editable. This would help to complete the process in the confirmation screen itself rather than going to Special:Translate.

Project Schedule
Notes:
 * 1) During the Requirement Gathering Phase, I will keep working on the next task in parallel
 * 2) After July 7, I might have reduced working hours (30 hours per week), as I will be moving to a new city. I will be working after my office hours, but I ensure that the tasks planned will be completed on time. The project schedule has been planned accordingly.
 * 3) I plan to write the documentation and unit tests as the project goes along.

Identity
Name: Pratik Lahoti Email: pr4tiklahoti@gmail.com Project title: Tools for mass migration of legacy translated wiki content

Contact/working info
Timezone: UTC+5:30 (IST - India) Typical working hours: 10:00 to 14:00 (IST) and 20:00 to 2:00 (IST) (however, can adjust and go beyond if required) IRC or IM networks/handle(s): BPositive (freenode) ''I have a stable internet connection at home without any proxy issues. So, connectivity won't be an issue at any point of time''

Mentors
Niklas Laxström and Federico Leva are my mentors for this project.

About me
I am Pratik Lahoti, from Pune, India. I am a final year Information Technology student from College of Engineering, Pune. I am known on all wikis as BPositive, and that's the attitude I carry with me! :) My journey on Wikipedia started as an editor. I was later selected as the Campus Ambassador for Wikipedia's India Education Program. I have also coordinated the WikiProject Indian Collaboration of the month whereby I carried out collaborations with editors from all over India. Owing to my contributions, I was fortunate to be a featured Wikimedian for the month of April 2012 on Wikimedia India. Contributing to FOSS projects, attending seminars, and involving more and more people in the movement has always been my passion!

I have met and worked with the WMF Language Engineering Team at hackathons held at Gnunify and their enthusiasm has been infectious! Hence, I would like to work with them.

Past Open Source Experience
I have been a promoter of FOSS in my college. I have conducted workshops for my juniors on subjects like "Introduction to FOSS", "Introduction to Vim", "Getting started with Git". I am also an active member of Google Developers Group Pune and have participated in a couple of hackathons and also attended several workshops. I have been attending Gnunify for the past four consecutive years and have interacted with many people from the Open Source community. I have also participated in the Translation sprint held by the WMF Language Engineering Team at Gnunify'13 and carried out translations for Marathi (mr) language on translatewiki.net.

Acknowledgment
I would like to thank my mentors, Niklas Laxström and Federico Leva for their valuable assistance in drafting this proposal and their time to time suggestions. I would also like to thank Sumana and Quim for helping me polish this proposal and ensuring that I complete the tasks on time. Finally, I would like to thank all the community members who provided help/feedback on the discussion page as well as on IRC.

Any other info
I am positive about the project getting over by the end of the program but due to some unavoidable circumstances, if I am not able to do so, I will unconditionally work on it after the program gets over and complete it. I hereby announce that once the project is over, I would like to take the responsibility of the tool developed and thereby maintain it, address bugs and any other concerns from the community.
 * Microtasks performed
 * Solved some bugs related to the Translate extension
 * Wrote a UserScript which returns the revision before FuzzyBot's edit on the page, if at all it exists. This would be the first step of the second part of the project - importing translations.
 * Manually migrated wiki pages (and will be doing more before project starts)
 * Project Experience
 * Participated in Google Cloud Developer Challenge 2013 and one of the developers of Direct2Drive
 * Internship at Eaton Corporation - Developed a time tracking application for the employees of Eaton
 * Personalized News Reader, a web application which uses Facebook page likes and Twitter followers to generate relevant news for the user. Also, I used Neo4j - a graph database for this project.
 * Emergency plan
 * Post GSoC plans