[
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