Projects:Verbatim
Data wrappers
1) Entity
Entity is a singular element with two basic properties - ID and value. Beside, an Entity may contain additional properties (like state fuzzy/untranslated from PO, or pre-comment in DTD/Properties)
2) EntityList
EntityList is an class extending type list and contains a list of entities.
3) L10nObject
L10nObject is a representation of single L10n file and may contain 3 basic types (Comment, Entity, String). Every L10nObject contains a full data required to recreate the source file.
4) L10nPackage
L10nPackage is a package containing L10nObjects and L10nPackages.
5) EntityListDiff
6) L10nDiffObject
7) L10nDiffPackage
I/O
1) ReaderWriter 2) FileClient 3) DBReaderWriter 4) RCSClient 5) XXXReaderWriter 6) XXXDiffReaderWriter
Roadmap
Stage 1
+ create simple L10nObjects/Entities/L10nObjects for dtd/properties. + write complex diff methods for an extended, content aware diffing. + build methods to apply diffs onto L10nObjects + add ability to store diff in the form of XML, ODS, CSV + prepare proof-of-concept webtool for scanning and localizing + prepare proof-of-concept GUI tool using PyQT4 + prepare proof-of-concept command-line tools - localize.py, compare-locales.py, compare-versions.py, apply-diff.py
Stage 2
+ rewrite codebase from scratch + add fileless data structures - mainly Database sources + add data structures with revisions - mainly CVS/SVN + extend data sources list to: DTD, properties, gettext (po), xhtml, sqlite, mysql + guarantee basic support for L20n file types according to current draft | rewrite diff methods | rewrite apply-diff methods - extend Entity type to support external EntityList sources - build methods to parse entity values for variables (mainly for DTD and l20n) - prepare proof-of-concept webtool for scanning and localizing - prepare proof-of-concept GUI tool using PyQT4 - prepare proof-of-concept command-line tools - localize.py, compare-locales.py, compare-versions.py, apply-diff.py - go public - apply licenses (current plan - 3license GPL/LGPL/MPL) - move codebase to code.google.com - call to arms
Stage 3
- start writing tools on top of the lib - try to stabilizie and freeze the lib API - GUI - - - webtool - - - command line - - - Firefox extension for localizing
Stage 4
- freeze API - XULRunner based tool for localization
Tutorial
1) Operations on single Entity 2) Operations on L10nObject 3) Using ReaderWriters/Clients 4) Diffing 5) Storing diffs 6) Applying diffs