Projects:Verbatim

From Braniecki's Wiki
Jump to navigation Jump to search

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