**Information for your profile**
Name: Dibya Singh
Email: divyalife526@gmail.com
IRC or IM networks/handle(s): Phoenix303
Location: India
**Synopsis**
Special:SearchTranslations is a tool that makes translation of system messages to different languages easy. This tool currently allows a translator to search for strings in the source language and displays as results those messages that contain that exact string (i.e. in source language). The current work-flow of a translator is as follows:
1) Search for a string, "wiki" (source language being English)
2) Select a target language from the left panel (the target language for the translator) -> This displays all messages that contain "wiki" (but should have contained the translation of the word in target language)
3) Click Edit translation of a result to change the translation.
Though the current translations settings are very flexible, they are probably more confusing to the translator. This project aims to provide functionality to make the process of searching and translating better, by forming productive work-flows for the translator.
Some critical areas of improvements which I have gathered from translators are:
1) Whenever1) If a translations exists for a search string, the translator should have the ability to choose to display the message results in source language (translated messages may contain source language text which need to be edited by the translator) oree results in the target language (the translator can review and edit the stored translation).
2) Ability to add translation for untranslated messages containing that string.
3) Searching by message key should display all matching messages.(*)3) User should able to perform specialized searches.
Additionally, there are specific UI enhancements that canwill improve the usability of the Special:SearchTranslations tool:
1) Displaying the translated and untranslated message results in separate tabs for easy navigation between them.
2) Allowing the option to select the target language from a side panel
Through the abov. Through these points this project aims to streamline the work-flows of translators in this tool improving productivity and consistency, hence saving translators' time.
- Possible Mentors: [[ https://meta.wikimedia.org/wiki/User:Nikerabbit | Niklas Laxström ]], [[ https://meta.wikimedia.org/wiki/User:Nemo_bis | Federico Leva]], [[ https://en.wikipedia.org/wiki/User:NEverett_%28WMF%29 | Nik Everett ]]
**Deliverables**
Please describe the details and the timeline of the work you plan to accomplish on the project you are most interested in (discuss these first with the mentor of the project).
**Project**: One stopRedefining Translation Search
This project consists of the following tasks. Approaches and user stories for each task is also mentioned.
//**Task//: 1: Categorizing Translation Search MessagesResults**
When translating at meta,e are dividing the message list into 2 categories: translated and untranslated tabs. The translated tab will display messages in target language (expected to come from the Universal Language Selector by default). The untranslated tab will display messages which are not translated yet. Any message can be edited by the translator. These tabs can also accessed from a side panel containing links to the tabs. the translation memory does not always show the results that the translator expectsTarget language are changed through a side panel. When the translator searches for words in search bar he/she expects by default to see the translated and untranslated results in his/her target language first but usually sees the results in other languages (mainly English)Results can be filtered into specific message groups through an option.
//Approach//User story:
By default- As a Spanish translator I search for //home// in English, the search result should show the list of all translated and untranslated messages in the translator's target language. This can be achieved as follows:and can choose to display either messages with //casa// or messages in Spanish messages which have //home// and need translating.
- I can change my target language to French.
- I can also display message from a specific message group.
- Find all strings in source language that match text
- Do another query for translations for those strings
-- If translation exists, provide Edit option. (update the document)
-- If translation does not exist, provide an Add option for the translation.(create and add document)Related tasks that will be done
- Boost the score for the translated and untranslated messages in the translator's language.
(discuss using language analyzer with mentors)-[[ https://phabricator.wikimedia.org/T55656 | T55656: Special:SearchTranslations: search in source language, results in my language ]]
//Task//: Status FilterExample Diagram
Provide an option for the translator to filter the messages based on status (translated, untranslated and outdated). This filter will provide the translator to work with different categories.<Diagram>
//Approach//**Task 2: Specialized Searches**
The solution can be achieved by adding “status” property to the index mappingThis task gives the translator advanced search options to get more specialized results from the tool. This field represents translated,Searching with variations of message key like //MediaWiki:Newarticletext// or specific strings searches like //1|$2]]</span> userna//. untranslated and outdated messages for each document.
Task based filter can be provided with different colors for each task to catch translator's attentionThese searches will use search options.
//Task//: Search with Message KeyUser story:
- As a translator I may know the exact string that I want to search and get results which appropriately match my query.
Related tasks that will be done
-[[ https://phabricator.wikimedia.org/T70518 | T70518: Special:SearchTranslations: allow messageid with ElasticSearch ]]
The translator may know the exact message key and would like to reach the message with one click. So, allow search with the exact message key as it would save translator's time.-[[ https://phabricator.wikimedia.org/T62570 | T62570: Allow "go" search feature to reach messages ]]
//Approach//Example Diagram
Customizing the index analyzer on localid. This will change the ttmserver index mapping and therefore, would require mentor suggestions on this approach.<Diagram>
//**Task//: Subgroup Selection 3: UI Enhancements**
When a translator clicks on “X other groups” in message group facet and selects message groups from the group selector but cannot select the subgroup of any groupDisplay message snippets for large messages and show the full message when translator clicks on it. Filtering results by subgroups.
//Approach//User story
- As a translator I will see UI enhancements like hiding message value for large messages.
Separate the tux-breadcrumb part of Special:Translate from the group selector javascript and also fix FIXME to support multiple group selectors per page. (This feature is used by Special:Translate and Special:SearchTranslations)- I will be able to display messages only from a particular message subgroup.
//Task//: UI EnhancementRelated tasks that will be done
When applying filters to narrow down the search, on selecting a filter the link for the selected option appears twice and does not distinguish from the unselected fields, causing potential confusion to the translator.
Steps to reproduce this bug: Navigate to SearchTranslations window → Select any filter → the same link is added twice.-[[ https://phabricator.wikimedia.org/T54703 | T54703: Meaningless group selector on Special:SearchTranslations ]]
//Approach//Example Diagram
Better method would be to allow toggle feature and highlighting the selected option so that it stands out amongst the rest. <Diagram>
**Detailed Timeline**
//Include a brief, clear work breakdown structure with milestones and deadlines. Make sure to label deliverables as optional or required. It’s OK to include thinking time (“investigation”) in your work schedule. Deliverables should include investigation, coding, deploying, testing and documentation.//
| Deadlines | Milestones
| Before the project begins | Get to know the mentors, get well acquainted with the project's code base. |
| May 25 – May 29 | As I have already setup my environment so this time will be used for documenting the same.|
|June 1 – June 12| Discussing and finalizing with mentor about the interface design for translation search.|
| |Designing the algorithm for score boosting system to give priority to the translator's language.|
| June 15 – June 26 | Analyze a way to add untranslated messages as documents in the index.|
| | Determine a process to update mapping to add status field.|
| | Investigate the effect of different features in the product and testing the same.|Code the algorithm to retrieve translated, untranslated and outdated messages from the translation memory |
| June 29- July 315 – June 26 | Design Status facet to select filter options between translated, untranslated and outdatthe search interface to display categorized messages.|
| | Coding of| June 29- July 3 | Investigate the interface design finalized in step 3effect of different features in the product and testing the same.|
| July 6 – July 10 | Code FIXME part of the group selector to handle click onselect subgroup of any group and allow multiple group selectors on each page. |
| July 13 – July 17 | Plan with mentor on supporting the feature for searching message with the message-keyspecialized searches. |
| July 20 – July 24 | Improving Usersearch interface like pagination, limit the character of messages to be displayed and so on.|
| July 27 – July 31 | Designing and Coding toggle button feature for the filter options.|
| August 3 – August 7 | Testing all the features and gathering potential bugs.|
| August 10 – August 14 | Bug fixing and improving the documentation. |
| August 17 | Pencils down.
Optional: Provide auto-complete feature for the search.
**Participation**
//We don't just want to know what you plan to accomplish; we want to know how. Briefly describe your work style: how you plan to communicate progress, where you plan to publish your source code while you're working, how and where you plan to ask for help. (We will tend to favor applicants that demonstrate a clear vision for what it means to be an active participant in our development community.)//
My work style till now has consisted of the following steps:
1) I clearly understand the requirement (if there are any questions, for clarity I ask in #mediawiki and #mediawikidev IRC channels)
2) Then I dig into the code to investigate what exactly was causing the problems
3) I test my solution and then submit my patch in Gerrit
4) Based on feedback on submitted patch, I make appropriate changes and resubmit.
Since this approach has worked well for me, I plan to use the same for my Outreachy project as well.
For communicating my progress with my mentors, I plan to use the IRC and/or mailing list to directly update my weekly progress. Apart from this, I will also blog about the work I have completed each week.
I plan to publish my work on Github.com while the project is under progress. This will allow mentors to view it and give feedback.
As I have been using IRC significantly for my previous MediaWiki patches, I will continue to use this resource for when I need help. Also, I will be using the mailing list when required.
**About you**
//Education completed or in progress: I have a Bachelor of Technology degree from SRM University, India.
How did you hear about this program? I have heard about this program from Wikimedia blogs.
Will you have any other time commitments, such as school work, another job, planned vacation, etc., during the duration of the program? //
No, other than 4 hours in a week for volunteering work at an elementary school, I have no other time commitment.
//We advise all candidates eligible to Google Summer of Code and FOSS Outreach Program for Women to apply for both programs. Are you planning to apply to both programs and, if so, with what organization(s)? //
No, as I am not eligible for it.
//We don't just care about your project -- you are a person, and that matters to us! What drives you? What makes you want to make this the most awesomest wiki enhancement ever?//
Outreachy can give me a unique opportunity to make an impact at a level I have never made before. I am very excited about this project and want to develop an excellent product that makes the lives of people easier. This change that I could bring to the world will be a big achievement in my life and that is what drives me.
//You don't need to write out your life story (we can read your blog if we want that), but we want to know a little about what makes you tick. Are you a Wikipedia addict wanting to make your own experience better? Did a wiki with usability problems run over your dog, and you're seeking revenge? :-) What does making this project happen mean to you?//
I am a long time user of Wikipedia. In my school days I frequently referred to content in Wikipedia for material for my science projects and exhibition posters. Nowadays I use it as a reliable source for information whenever I need to look up something be it movies, people, companies, countries, and so on.
As a contributor in MediaWiki over the last 2 months, I have learned about the developer efforts that go to build this seamless and user friendly product. This fascinates me and therefore I want to be a part of this community.
**Past experience**
//Please describe your experience with any other FOSS projects as a user and as a contributor://
I have used Firefox for many years now and use it almost everyday for web browsing. I work with Firebug for web development. Also, I have been using Ubuntu for more than a year now. Ubuntu Software Center is a feature I like as it has made installation easier than before.
//Please describe any relevant projects that you have worked on previously and what knowledge you gained from working on them (include links)://
The relevant projects (microtasks) that I have worked on are:
1) Load the other groups with search results in the group selector ([[ https://gerrit.wikimedia.org/r/#/c/195560/ | link ]]): I learned how to load groups in the group selector and how recent and default groups are loaded, hence learning about the working of the group selector.
2) Correctly position the triangle shaped callout of group selector ([[ https://gerrit.wikimedia.org/r/#/c/195854/ | link ]]): I learned about javascript and CSS coding conventions used in MediaWiki and also positioning to support RTL languages.
3) Search message with message key without namespace ([[ https://gerrit.wikimedia.org/r/#/c/196140/ | link ]]): I learned about index mapping and how the index and the search analyzers work.
4) Separate message for Summary field with 4 tildes ([[ https://gerrit.wikimedia.org/r/#/c/182757/ | link ]]): I learned about coding conventions for internationalization (i18n).
//What project(s) are you interested in (these can be in the same or different organizations)?//
The project I am most interested in is One stop translation.
//Do you have any past experience working in open source projects (MediaWiki or otherwise)? If so, tell us about it! If you have already written a feature or bugfix in a Wikimedia technology such as MediaWiki, link to it here; we will give strong preference to candidates who have done so.//
Yes, I have submitted various patches for different extensions of MediaWiki which have been merged. They can be viewed [[ https://gerrit.wikimedia.org/r/#/q/owner:Phoenix303+status:merged,n,z | here ]].