[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| 
[babel-dev] Translations and Project Versions
 | 
Greetings Bablers,
   With the new year ahead of us and holidays behind us it is time to 
peer into the future and see what we can do to get babel up and 
running.   I am starting by reworking the database a bit.  My goal is to 
change the database as little as possible while making the future better.
   The basic issue I am running into has to do with projects and 
versions.  The importing spec that we have been following 
(http://wiki.eclipse.org/Babel_/_Server_Tool_Specification) (*note this 
is a new location for this wiki page) doesn't really address versions 
for projects.
   What seems to make sense to me is that  when importing an English 
string (Bar) for project Foo version 1 we should only have one copy of 
'Bar' for all future release of Foo (version 2,3,4..).   This side 
effect of this is will be if we change the translation of Bar it will be 
changed in ALL versions of Foo. 
   One way  to handle this would be to treat each Project/Version as if 
it were is own project.  So when we import a new .property file we look 
at each key/value pair and see if that key/value/filepath already exists 
(in the srtings table), if so we use it.  If not we add a new entry into 
the strings table.
   This requires adding a new table (call it filestrings) that will map 
all the incoming strings from a file (hence the clever name).  This new 
table will simply hold 2 keys one to the file table, and one to the 
strings table.
    Below is the old merge algorithm and below that is my new proposed 
algorithm.
====Input Merge==== (OLD)
# For each key-value in the Babel database, check if the key exists in 
the input. If not, delete the key-value from the Babel database (saving 
it in the audit trail and history), of course.
# For each key-value in the input, check if the key exists in the Babel 
database.
## If so, check if the value is the same.
### If so, no action.
### If not, replace the value and mark all translations as potentially 
incorrect.
## If not, add the key and value to the Babel database.
====Input Merge==== (PROPOSED *note has a new table filestrings)
#For each key-value in the input
## if key-value exist in strings table and is from the same file
### True add link from filestrings table to the existing entry in the 
strings table
### If not, insert a new key and value into strings table and make link 
in filestrings
  If anyone has input or concerns please let us know.  The current 
database schema can be found in CVS for the babel project (the file is 
'babel-setup.sql').
Thanks,
Gabe O'Brien
Darn Good Developer
The Eclipse Foundation