My application for Ryzom

I will write here a draft of my application after that I will post it on melange.

Name

Name: Emanuel Costea

Nickname(s) (irc, IM, forums etc.): cemycc

Email:

Phone: 00400751641702

Age: 20

Country: Romania

Timezone: GMT+2

Email/IRC/WWW

My Email:
On IRC you can find me under cemycc.
WWW: http://www.cemycc.net - My blog is in a beginning state

Synopsis

Did you select a project from our ideas list? If so, why did you select this project?

I have selected OVQT Translation Plugin with some of my additions.
I have selected this project because I know that I can complete it with my knowledge of C++ and QT.

About

The aim of my project is to create a new tool for the Ryzom cummunity that will help the designers and translators.
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
As core features the new tool will be able to:
  • 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 command line for every step in the translation process and you need to write a new command (with or without paramamaters) for every step.
Secondly, you don't have GUI support so you will need to open/close the text editor multiple times.
When your project has three different types of files for translations, to work with such a tool gets quite hard.

First example
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.

Second example
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.

Third example
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

Deliverables

  • A OVQT plugin that will help the designers to port variables from primitives to translation files
  • A tool that will help the translators

Milestones

  1. Designers tool -> will have the features for designers.
  2. Developers tool -> will easily append other translations ( example: from FTP )
  3. Translators tool -> will have support for worksheet view and edit
  4. OVQT plugin -> will work as a OVQT plugin

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.
    1. reading/writing on translation files
    2. reading from primitives
    3. starting to write the GUI
    4. implementing the features for designers in GUI ( first milestone )
    5. writing the FTP support
    6. implementing the features for developers in GUI ( second milestone )
  • July 15 : The next part of coding.
    1. implementing the features for translators to edit/create/remove/search/replace on GUI ( third milestone )
    2. implementing the visual editor for easily creating NPC dialogs with advanced functions
    3. implementing this tool as an OVQT plugin and standalone application. ( fourth milestone )
    4. making the final additions
  • After August 30 : Helping the Ryzom community with other additions

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
Why I have made this additions:
  • With these features, the tool can be used by a translator
  • With the FTP connection the tool will easily interact with the web-tool.

Application Architecture

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 communicates with a source of data ( translation files ), providing an interface for other components in the architecture. Also, he will store different types of translation files.
The View will communicate with the Model and will retrieve the items of data. When an item is edited, the delegate communicates with the model directly using model indexes.

Application features

  1. 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)
  2. 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)
  3. Will be able to read from primitives and compare the result with the variables from translation files. To read from primitives I will use the classes from Nel Ligo
  4. Will be able to easily edit worksheets
  5. 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.
  6. 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. They are at the first revision.

Bio

  1. Who are you, what subject are you studying and where?
    In the last 3 years, I was working as a freelancer with PHP. After that I was learning about design patterns, oriented programming and started to work with other programming languages.
    In the last year I worked with C++ and QT and, when I started my programming classes at faculty, my knowledge of C++ got better.
    Now, this month, I will finish a project with one of my colleague that was written in Ruby and Lisp and use beanstalkd ( http://kr.github.com/beanstalkd/ ) for communication. The project is for faculty, when it will be finish I think that will be opensource.
  2. What do you enjoy doing?
    Creating desktop applications and in the free time, playing pool with my friends .
    Also, I enjoy making trips in mountains.
  3. What are your experiences using WorldForge software?
    None
  4. What makes you the best person for this project?
    I was a addicted player for mmorpg games. I was playing allot of games for a long period of time . After that I was working on emulators for MMORPG games for a short time, just to understood the server part.
    I want to work on this project because, for me, it will represent a consequence of spending my childhood playing this sort of games.
    Anyway, I will never hate my childhood, for a guy like me, playing this games at that moment was like creating my own world where all my friends understood and helped me.
    In my opinion, MMORPG games make the player to be a little more powerful than he is in real life.