OVQTTranslationPluginGSoc2011

Version 1 (cemycc, 04/06/2011 10:14 pm)

1 1 cemycc
h1. My application for Ryzom
2 1 cemycc
3 1 cemycc
I will write here a draft of my application after that I will post it on melange.
4 1 cemycc
5 1 cemycc
h2. Name
6 1 cemycc
7 1 cemycc
My name is Emanuel Costea.
8 1 cemycc
9 1 cemycc
10 1 cemycc
h2. Email/IRC/WWW
11 1 cemycc
12 1 cemycc
My Email: [email protected]
13 1 cemycc
On IRC you can find me under *cemycc*.
14 1 cemycc
WWW: http://www.cemycc.net - My blog is in a beginning state
15 1 cemycc
16 1 cemycc
h2. Synopsis
17 1 cemycc
18 1 cemycc
I want to create a new tool for the Ryzom community. 
19 1 cemycc
The tool will be written in C++ with QT and will use some components from NeL. Also, the new tool will work as an OVQT plugin.
20 1 cemycc
21 1 cemycc
The new tool will easily generate default strings and variables on translation. The tool will be able to get the list of variables from primitives and after that it will compare it with the actual list of translations.The users will have the possibility of searching, creating or modifying new strings in the translation files. 
22 1 cemycc
23 1 cemycc
As GUI Features the new tool will be able to:
24 1 cemycc
* search and replace 
25 1 cemycc
* create new strings in translation file
26 1 cemycc
* modify the strings from translation file
27 1 cemycc
* switch to worksheet view with editing capabilities
28 1 cemycc
* display comments from strings
29 1 cemycc
30 1 cemycc
As core features the new tool will be able to:
31 1 cemycc
* connect to an ftp server and get new translation files (this feature will help the communication between the present application and the web-tool so you can easily update the files)
32 1 cemycc
* read the translation files
33 1 cemycc
34 1 cemycc
Another feature that I will implement will be a nice GUI for viewing and editing the phrase files.  
35 1 cemycc
36 1 cemycc
h2. Benefits for WorldForge
37 1 cemycc
38 1 cemycc
This tool will ease the work of designers and translators.
39 1 cemycc
40 1 cemycc
h3. About the existent tool
41 1 cemycc
42 1 cemycc
The tool that currently handles the translations is quite old and difficult to work with.
43 1 cemycc
Firstly, you need to use the +command line for every step+ in the translation process and you +need to write a new command (with or without paramamaters)+ for every step.
44 1 cemycc
Secondly, you don't have GUI support so +you will need to open/close the text editor multiple times+.
45 1 cemycc
When your project has three different types of files for translations, to work with such a tool gets quite hard.
46 1 cemycc
47 1 cemycc
*First example*
48 1 cemycc
You are a professional translator that doesn't have good computer skills. You will need to edit a Spreadsheets file. 
49 1 cemycc
It will be a pain because you need to know how to write the strings, when to use the tab. You can go wrong quite easily and after that you will need to go through the entire file to see where the problem is.
50 1 cemycc
Then, the Ryzom staff will need to set two people for this task: the professional translator and a developer with plenty of time to edit the strings in the Spreadsheets file.
51 1 cemycc
52 1 cemycc
*Second example*
53 1 cemycc
You are a game designer, you are working on creating new quests. You have written the quests on your notebook, now the first step will be to create the NPCs for the quest.
54 1 cemycc
Also, you have created the NPCs with the World Editor and now you need to insert them in translation files to set their names.
55 1 cemycc
So, if you have created around 10-20 NPCs you will need to insert from 20 to 40 lines in the files. You want to insert the base names for NPCs and those names to be generated from their variable (just for tests right now). 
56 1 cemycc
For example you have created an NPC called: _tatiana_questkeeper_npc_ and you want his name to be : Tatiana Questkeeper -> later on, this name will be edited by the translator, but for now you need it like this for testing. 
57 1 cemycc
With the existent tool you will need to write a cfg file to set some paths and other vars for the primitives (at least it is a one time operation). Afterwards, you need to get the list of NPCs from primitives, to compare the new list with the current list, to edit the new strings, save the new strings. To create a new string for an NPC you will need to edit two files.
58 1 cemycc
59 1 cemycc
*Third example*
60 1 cemycc
You are a developer and you have to import the new translator strings created with the web-tool.
61 1 cemycc
You will need to connect to an FTP server to get the files, then compare the files with the existent tool and after that to insert them.
62 1 cemycc
It is quite a hard process if you need to do it every day. 
63 1 cemycc
64 1 cemycc
I admire the translators who have worked with this tool, but after this summer I promise to offer something new, better and improved.
65 1 cemycc
66 1 cemycc
h3. About the new tool
67 1 cemycc
68 1 cemycc
With the new tool:
69 1 cemycc
* Designers will spend 1 min or less to generate the strings for the new NPCs or other objects that they create with World Editor, and the object will be stored in primitives
70 1 cemycc
* Translators will have a nice visual editor to edit the files. 
71 1 cemycc
* Also, the translators that don't know programming will be able to easily create and edit game dialogs.
72 1 cemycc
* If you are new as a translator you will find hints on the GUI so you can easily understand the system
73 1 cemycc
* You will have the possibility of importing new translator files from an FTP server and compare them
74 1 cemycc
75 1 cemycc
h2. Deliverables and Project Schedule
76 1 cemycc
77 1 cemycc
* *Before April 25* : I will work every day on understanding the Ryzom core and, if I can, I will help with patches.
78 1 cemycc
79 1 cemycc
* *Community Bonding Period* : I will try to understand Nel and its features, also OVQT's plugin system.
80 1 cemycc
81 1 cemycc
* *May 23* : I will start the coding.
82 1 cemycc
# reading/writing on translation files
83 1 cemycc
# reading from primitives
84 1 cemycc
# starting to write the GUI
85 1 cemycc
# implementing the features for designers in GUI
86 1 cemycc
   ( _first milestone_ )
87 1 cemycc
# writing the FTP support 
88 1 cemycc
# implementing the features for developers in GUI
89 1 cemycc
   ( _second milestone_ )
90 1 cemycc
91 1 cemycc
* *July 15* : The next part of coding.
92 1 cemycc
# implementing the features for translators to edit/create/remove/search/replace on GUI
93 1 cemycc
   ( _third milestone_ )
94 1 cemycc
# implementing the visual editor for easily creating NPC dialogs with advanced functions
95 1 cemycc
# implementing this tool as an OVQT plugin and standalone application.
96 1 cemycc
# making the final additions 
97 1 cemycc
   ( _fourth milestone_ )
98 1 cemycc
99 1 cemycc
* *After August 30* : Helping the Ryzom community with other additions and playing their game
100 1 cemycc
101 1 cemycc
h2. Detailed Description
102 1 cemycc
103 1 cemycc
My additions from the base idea are:
104 1 cemycc
* The tool will act as a standalone application and as an OVQT plugin
105 1 cemycc
* Connecting to an FTP server to get the last translations 
106 1 cemycc
107 1 cemycc
Why I have made this additions:
108 1 cemycc
* With these features, the tool can be used by a translator
109 1 cemycc
* With the FTP connection the tool will easily interact with the web-tool. 
110 1 cemycc
111 1 cemycc
h3. Application Architecture
112 1 cemycc
113 1 cemycc
I will use MV (Model/View) for architecture. If the software will be built with a software architecture, developers will be able to easily understand the code.
114 1 cemycc
_Model-View-Controller (MVC) is a design pattern. If the view and the controller objects are combined, the result is the model/view architecture. 
115 1 cemycc
This still separates the way that data is stored from the way that it is presented to the user, but provides a simpler framework based on the same principles._ 
116 1 cemycc
 
117 1 cemycc
!http://www.cemycc.net/ryzom/schema.png!
118 1 cemycc
119 1 cemycc
	The model/view architecture
120 1 cemycc
The model communicates with a source of data, providing an interface for the other components in the architecture. The nature of the communication depends on the type of source data, and the way the model is implemented.
121 1 cemycc
The view obtains model indexes from the model; these are references to items of data. By supplying model indexes to the model, the view can retrieve pieces of data from the data source.
122 1 cemycc
In standard views, a delegate renders the pieces of data. When an item is edited, the delegate communicates with the model directly using model indexes.
123 1 cemycc
124 1 cemycc
In our case the source of the data will be the translation files. The model will store different types of translation files. 
125 1 cemycc
The View will communicate with the Model and will retrieve the pieces of data.
126 1 cemycc
127 1 cemycc
h3. Application features
128 1 cemycc
129 1 cemycc
# Will be able to easily read/write from/to translation files. It will store the results in objects and the objects will be mapped. After that, the application will be able to edit, delete, create objects and when the user will save the results, the application will write the object content to translation files. (here I can use other methods - I like this one because it is OOP)
130 1 cemycc
# Will be able to compare files and output the differences between two files. Afterwards, the user will edit and save the changes to the files. (this is why I want to use MV architecture, because the application will need to open and compare 2 files and it will be easy to store them in model)
131 1 cemycc
# Will be able to read from primitives and compare the result with the variables from translation files. 
132 1 cemycc
# Will be able to easily edit worksheets
133 1 cemycc
# Will be able to connect to an FTP server and get the translation files from there, or the user can manually select other translation files. 
134 1 cemycc
# Will be able to provide a map of phrases to other plugins
135 1 cemycc
136 1 cemycc
Also, in the Community Bonding Period I will work with Nel components to get familiar with them.
137 1 cemycc
138 1 cemycc
h3. Mockups for the application
139 1 cemycc
140 1 cemycc
Here are four mockups, for the application GUI. +They are at the first revision.+
141 1 cemycc
142 1 cemycc
!http://www.cemycc.net/ryzom/Page_2.png!
143 1 cemycc
144 1 cemycc
145 1 cemycc
!http://www.cemycc.net/ryzom/Page_3.png!
146 1 cemycc
147 1 cemycc
148 1 cemycc
!http://www.cemycc.net/ryzom/Page_4.png!
149 1 cemycc
150 1 cemycc
151 1 cemycc
!http://www.cemycc.net/ryzom/Page_5.png!
152 1 cemycc
153 1 cemycc
h2. Bio
154 1 cemycc
155 1 cemycc
# *Who are you, what subject are you studying and where?*
156 1 cemycc
# *What do you enjoy doing?*
157 1 cemycc
# *What are your experiences using WorldForge software?* 
158 1 cemycc
# *What makes you the best person for this project?* 
159 1 cemycc
# *If you have ever contributed to WorldForge before, this is the place to mention it and point at patches and/or email conversations.*