I know it's not the best moment to announce anything (people are on
their flights to Whistler, or jet lagged to death), but I can wait no
more (Pike is threating me).
During last half a year I've been working in my spare time on
The purpose of this kind of library is to simplify development process
of L10n applications of any kind - from webapps, command line tools to
The library is named Silme and currently supports storing and
manipulating API for l10n files, entities and directories.
The library unifies by a common API datasources, be it - disk space,
SVN, CVS, HG, or SQL like mySQL or SQLite.
Beside, library allows a user to build operations independent of the
storing format (PO, Properties, DTD, L20n, XLIFF, etc.).
The library is open source (tri-licensed) and I fully encourage you to
participation in its development as it's very far away from being ready.
Silme is not a webtool, or any other kind of ready to use tool - it only
contains pieces that can be used to simplify the work on the tools. You
can focus on the UI and features, and once you have to, say, get all
entities from file - you can use Silme API to load it in no time.
Despite of that, for testing purposes, and out of curiosity, I wrote
several small testing tools on top of the library. They're by no mean
complete, and the code may be ugly (it's for testing, right?), but it
may help you understand the code and the patterns that you can use.
While working on the API I tried to use all my experience with
localization and reproduce to maximum the way localizer acts, but just
automating the patterns that can be automated.
In result the library does do minimum to the file it operates on
(preserving the structure) and follows the patters localizers use (by
appending a new entity after some other entity instead of adding it at
The whole project is both, big and small at the same time. I've spent
several months experimenting with API to cover all potential usage
patterns and came to the point where I believe core classes are ready
and the library may be used to simplify many tasks. At the same time the
whole localization category is huge and mainly not touched by anyone
before (afaik). It means that many elements have never been solved and
I'm discovering solutions while working on the library. It requires many
more work to cover all cases for multiply projects in any language (like
higher-level entity parsing - plurals, declension, inner variables
etc.), but I believe that the skeleton is scalable, mostly frozen and
ready to be published and attract others to help me working on it.
I chose Python because it is the only language that is pretty modern,
clean, multi-platform, open source and may easily serve for
command-line, webtools and GUI tools.
You can read initial documentation and tutorial here:
The API can be produced with doxygen (which I don't have right now)
The current sources may be viewed at http://svn.braniecki.net/wsvn/Silme
Currently there are several tools that works, including simple QT4 tool
and a webapp that may be used to work on single l10nPackage from file or
Roadmap is here: http://wiki.braniecki.net/Silme:roadmap
As you can see the current plan is to go up in the abstraction stack to
add support for syntax of each entity and make it easy for apps to
display things like similar entities, or other translations of the same
entity and to add ability to parse entities (plurals, declension, inner
If you have any questions, concerns, or would like to join the effort,
please, feel free to respond here, email me or ping on IRC. I will be
more than happy to get support. :)
Very good news. When facing the firefox 2 to firefox 3 localization
update problem, I though I will write a Python script at least to
merge lines containing new strings into the localization files. I will
explore your initiative soon.
Thanks for the demo you gave me here at the Summit. For localizers: this
is really really great stuff coming up here, finally there will be one
thing that can drive webtools and UI tools and scripts and unifies stuff
from dtd, properties, po, and some other file formats and export
localized files in a way that doesn't destroy how the files look!
Thanks gandalf for working on this!