**Information for your profile**
Name: Dibya Singh
IRC or IM networks/handle(s): Phoenix303
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 those messages that contain that exact string (i.e. in source language). The current work-flow of a translator:
# Search for a string, "wiki" (source language being English)
# Select a language filter from the left panel (the target language for the translator)
# Get results in source language (messages which contain "wiki")
# Click Edit translation to change the translation.
Though the current settings are very flexible, they are probably more confusing to the translator. This project aims 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:
# If a translation exists for a search string, then the translator sees results in the target language (can review and edit the stored translation).
# Ability to add translation for untranslated messages.
# User should be able to perform specialized searches.
Additionally UI enhancements will improve the usability of the tool. Through these points this project aims to streamline the work-flows of translators improving productivity and consistency, hence saving translators' time.
I have identified a few customers of Search Translations who I will be in constant contact with during the project to (re)determine my goals and progress:
| **Customer** | **Link to Search Translation** |
| [[ https://translatewiki.net | Translatewiki.net ]] | [[ https://translatewiki.net/w/i.php?title=Special:SearchTranslations | link ]] |
| [[ http://translateblender.ru/ | Translate Blender ]] | [[ https://translateblender.ru/wiki/Special:SearchTranslations | link ]] |
| [[ http://intense.wmflabs.org/ | Intense ]] | [[ http://intense.wmflabs.org/wiki/Special:SearchTranslations | link ]] |
The approach I took to identify and contact the customers is:
# Open Wiki page of each user mentioned [[ https://wikiapiary.com/wiki/Extension:Translate | here ]].
# Go to Special:SearchTranslations.
# If translation search service found, contact them whether they are using it actively.
[[ 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 ]]
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**: Reinvent Translation Search
Testing plan: I have already set up my local environment where I will develop and test the deliverables. To interact with the customers I will create another environment where they can test the current development and give feedback.
This project consists of the following tasks:
**Task 1: Categorizing Translation Search Results**
We are dividing the message list into categories: translated, untranslated and outdated 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. Target language are changed through a side panel. Results can be filtered into specific message groups through an option. Translator can also choose between case-sensitive and case insensitive searches through a checkbox. Translator can also choose to do a "match any word" or a "match all words" for the search query.
We can find translated messages in the target language by finding message key pairs. From this translated list we can extract all translations marked as fuzzy for the outdated message list. The untranslated messages in the target language can be displayed if the message key of the string in source does not exist in the target language and on translating these messages it would be added as documents in the index.
A checkbox beneath search box will force the search to look for case sensitive matches with search analyzer.
- As a Spanish translator I search for //home// in English, 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.
- I can also do a special search like only searching for messages with a specific key, or which contain special characters, or even matching all/any words in message query.
- I can also do a case sensitive search.
Related tasks that will be done
**Task 2: Specialized Searches**
This task gives the translator more search options to get results from the tool in one go, reducing the number of clicks required. The following options are included:
Searching with parameters:
- type (default is //msgall//): This gives the type of search.
-- "key" for message-key searches
-- "exact" for exact matches
-- "msgany" to match any word in the query string
-- "msgall" to match all words in the query string
- status (default is //all//): This gives the status of result messages.
-- "all" for all messages
-- "translated" to match translated messages
-- "untranslated" to match untranslated messages
-- "outdated" to match outdated messages
- lang (default from ULS): This gives the target language of the search as 2 letter code. e.g. de for German, fr for French and so on.
- grp (default is //all//): This gives the message group that's selected for the search. e.g. MediaWiki, MediaWiki (core) etc.
- case (default is //false//): This gives whether the search is case sensitive or not.
The query string is parsed to retrieve all options values and message value to be searched. The option values are then extracted from the query string. Then filter the results based on options. If no value is found for any option then its default value will be used. Also, autosuggest feature shows the possible values of search parameters.
Also allowing wildcard searches to return results that match combinations of characters and wildcards example edit* will match any word starting with edit.
- As a translator I may know the exact kind of special search I want to perform and get results match my query by writing a single query string containing all my search options.
- While typing a specialized search, I am shown auto suggested values of search parameters.
- I can do wildcard searches and have matching results displayed.
Related tasks that will be done
**Task 3: UI Enhancements**
Display message snippets for large messages and show the full message when translator clicks on it. Allow filtering results by subgroups.
- As a translator I will be able to display messages only from a particular message subgroup.
- On selecting a filter I won't see duplicate links.
- When search results are empty I do not see any filters.
- I will see limited text for large messages.
Related tasks that will be done
//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.//
After each task completion (code and testing) deploy in customer's environment.
| **Deadlines** | **Milestones** |
| Before the project begins | Get well acquainted with the project's code base. |
| May 25 - May 27 | Set up a test wiki. Document the same. |
| May 27 - May 29 | Finalizing the design by discussing with the mentors. |
| | Create the design mockup. |
| June 1 - June 10 | Design and implement an algorithm to add translated, untranslated and outdated messages. |
| June 10 - June 19 | Build the user interface based on the finalized mockup. |
| | Test with different workflows. |
| | Deploy the code in the test wiki. |
| June 22 - June 23 | Develop the user interface to support specialized searches. |
| June 24 - June 26 | Code the algorithm to perform message-key searches. |
| June 29 - June 30 | Code the algorithm to perform search for exact matches. |
| June 30 - July 1 | Code the algorithm to perform search for any word in the query string. |
| July 2 - July 3 | Code the algorithm to perform search for all word in the query string. |
| July 6 - July 8 | Code the algorithm to perform wildcard search. |
| July 9 - July 10 | Test specialized search based on different user inputs. |
| | Deploy the code in the test wiki |
| July 13 - July 14 | Investigate and finalize the structure of autosuggest |
| July 14 - July 24 | Design and implement the autosuggest feature |
| | Test specialized search based on different user inputs. |
| | Deploy the code in the test wiki |
| July 27 - July 31 | User interface improvement. |
| August 3 - August 7 | Test all the features and gather potential bugs.|
| August 10 - August 14 | Bug fix and improve the documentation. |
| August 17 | Pencils down. |
Optional: Provide auto-complete feature for the search.
//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:
# I clearly understand the requirement (if there are any questions, for clarity I ask in #mediawiki and #mediawikidev IRC channels)
# Then I dig into the code to investigate what exactly was causing the problems
# I test my solution and then submit my patch in Gerrit
# 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 [[ https://gerrit.wikimedia.org | Gerrit ]] 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.
//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.
//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:
# 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.
# Reindex tool to update index mapping ([[ https://gerrit.wikimedia.org/r/#/c/199666/ | link ]]): I learned how to update index mapping.
# Fixed language and group facets duplication ([[ https://gerrit.wikimedia.org/r/#/c/198677/ | link ]]): I learned about grouppath option.
# Search message with message key ([[ https://gerrit.wikimedia.org/r/#/c/196140/ | link ]]): I learned about index mapping and how the index and the search analyzers work.
# 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 ]].