My application for Ryzom¶
I will write here a draft of my application after that I will post it on melange.
My name is Emanuel Costea.
I want to create a new tool for the Ryzom community.
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.
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.As GUI Features the new tool will be able to:
- search and replace
- create new strings in translation file
- modify the strings from translation file
- switch to worksheet view with editing capabilities
- display comments from strings
- 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)
- read the translation files
Another feature that I will implement will be a nice GUI for viewing and editing the phrase files.
Benefits for WorldForge¶
This tool will ease the work of designers and translators.
About the existent tool¶
The tool that currently handles the translations is quite old and difficult to work with.
Firstly, you need to use the in the translation process and you for every step.
Secondly, you don't have GUI support so .
When your project has three different types of files for translations, to work with such a tool gets quite hard.
You are a professional translator that doesn't have good computer skills. You will need to edit a Spreadsheets file.
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.
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.
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.
Also, you have created the NPCs with the World Editor and now you need to insert them in translation files to set their names.
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).
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.
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.
You are a developer and you have to import the new translator strings created with the web-tool.
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.
It is quite a hard process if you need to do it every day.
I admire the translators who have worked with this tool, but after this summer I promise to offer something new, better and improved.
About the new tool¶With the new tool:
- 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
- Translators will have a nice visual editor to edit the files.
- Also, the translators that don't know programming will be able to easily create and edit game dialogs.
- If you are new as a translator you will find hints on the GUI so you can easily understand the system
- You will have the possibility of importing new translator files from an FTP server and compare them
Deliverables and Project Schedule¶
- Before April 25 : I will work every day on understanding the Ryzom core and, if I can, I will help with patches.
- Community Bonding Period : I will try to understand Nel and its features, also OVQT's plugin system.
- May 23 : I will start the coding.
- reading/writing on translation files
- reading from primitives
- starting to write the GUI
- implementing the features for designers in GUI
( first milestone )
- writing the FTP support
- implementing the features for developers in GUI
( second milestone )
- July 15 : The next part of coding.
- implementing the features for translators to edit/create/remove/search/replace on GUI
( third milestone )
- implementing the visual editor for easily creating NPC dialogs with advanced functions
- implementing this tool as an OVQT plugin and standalone application.
- making the final additions
( fourth milestone )
- After August 30 : Helping the Ryzom community with other additions and playing their game
Detailed Description¶My additions from the base idea are:
- The tool will act as a standalone application and as an OVQT plugin
- Connecting to an FTP server to get the last translations
- With these features, the tool can be used by a translator
- With the FTP connection the tool will easily interact with the web-tool.
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.
Model-View-Controller (MVC) is a design pattern. If the view and the controller objects are combined, the result is the model/view architecture.
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.
The model/view architecture
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.
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.
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.
In our case the source of the data will be the translation files. The model will store different types of translation files.
The View will communicate with the Model and will retrieve the pieces of data.
- 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)
- 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)
- Will be able to read from primitives and compare the result with the variables from translation files.
- Will be able to easily edit worksheets
- 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.
- Will be able to provide a map of phrases to other plugins
Also, in the Community Bonding Period I will work with Nel components to get familiar with them.
Mockups for the application¶
Here are four mockups, for the application GUI.
- Who are you, what subject are you studying and where?
- What do you enjoy doing?
- What are your experiences using WorldForge software?
- What makes you the best person for this project?
- If you have ever contributed to WorldForge before, this is the place to mention it and point at patches and/or email conversations.