The project consists in a web application to be developed in C# using the MVC pattern implemented by Microsoft, MS SQL, and entity framework with code first.
The purpose of the platform is to make translation easier.
One registered user can create a project that is displayed as a directory. Each directory is made of sub-directories and files.
Each file is a localizable-resource. Each project can be translated into multiple languages. The creator of the project can assign one or more translators to every available language for that specific project.
Creator can invite a translator to a project by the translator’s registered email.
Users in the platform can be assigned one or more of the following permissions: Creator, Can Read, Can Write, Can Translate.
Creator and CanWrite users can change the structure of the project, adding, deleting or renaming files and directories.
Only localizable resource files can be added in the project.
Each file contains a list of key,values,description. The key is the name of the token, the value is the original value for that key and the description helps the translator to understand the context where that value is used.
Files can have different formats, xml, plain text etc. The system should be designed so that a loader can be added at any time. The initial loader should be able to load XML files with an easy schema.
When a resource file is added in the project, the systems checks if that file exists.
If it doesn't exist, its resources (key/values) are mapped in a database table. The file itself is lost and only its database representations remains.
Now, the file can be translated by translators.
If the file already exists in that directory, the uploader is asked to merge it or cancel the operation. In case of merging, the new Keys are added in the database, no longer existing Keys are marked as deleted and the Keys whose values changed are marked as changed.
Each time a value is translated, the system keeps track of date, time, translator and old values. When the value changes, until the translator doesn't "approve" that translation, the value will be displayed in yellow. When the translator approves the translation, it will be displayed in green. When a file is uploaded containing a new original-value for an existing key, the translator will see that value in yellow.
Translators can browse the project directories and see which files need to be translated or completed. Alternatively they can see a list of files from their dashboards. When they open a file, they can choose from a menu which language to translate to. A table is loaded and the columns are: Key, Original value, description, translated value, Commands. Commands are: approve, revert, see history. Approve approves the translation, Revert reverts the translation to the previous one if any, See history pops up a table that show the translation history for that key.
At any time Can Read users can Save a specific file or directory. If a directory is chosen to be saved, a zip file is created and downloaded.
Files can be saved in different formats, the system should be designed so that new "Writers" can be added later. Initially, the system should be able to write out files in XML format with an easy schema.