I'm currently experimenting with important UI changes meant to simplify things. The ideas so far are:
- reduce the number of pages to the barely minimum; only one page for translating
- drop the pagination and load new content when scrolling down; it feels more natural to the user
- show only the original text and a text input for translating it; everything else only on demand
Any ideas or complaints are warmly welcomed!
Wednesday, June 29, 2011
Thursday, May 26, 2011
Going to Mozilla Balkans Community Meet-up in Sofia
Thanks to Mozilla, I'll be in Sofia between 3 and 6 of June attending the Mozilla Balkans Community Meet-up.
Monday, May 9, 2011
Why do you have to go and make things so complicated?
Remember, localizers are usually volunteers. When I started Narro, my idea was to make their life easier by allowing them to receive translations from anyone and to pull/push translations without knowing SVN, Mercurial, or any other technical stuff.
The idea setup would be:
The current Mozilla setup is:
I may have forgotten some steps, but obviously this is not the perfect setup. I'm keen on helping making things easier as I'm a localizer myself but there are some blockers here:
Now don't think that Mozilla is the only software that has this complicated setup. But this localizer tool should be able to cope even with this situation, because it's not a perfect world we live in. It's a challenge.
The idea setup would be:
- The localizer gets the translation files through Narro import
- Translation begins (offline or online)
- The localizer pushes the translation files through Narro export
The current Mozilla setup is:
- Pull the entire Mozilla repository (> 500MB)
- Scan its directory for localization files and build through symlinks a folder structure that resembles the one that localizers need to push in their repository
- Run an import from that folder
- Translation begins
- Translation is exported in XPI format for testing purposes
- There's a script made by Axel Hecht, compare-locales that does some checks for validity, because translations can really break the product. To help, I'm running that after every export and post a link to a diff file that contains links to the texts that need fixing
- Translation is exported in the structure that should be comitted to Mercurial
- The localizer needs to have Mercurial through SSH with key authentication set up
- The localizer commits the structure exported from Narro (hg pull .../xx-XX.zip && unzip xx-XX.zip && hg commit && hg push)
- The localizer checks the tinderbox for any build failures
- The localizer checks the dashboard for any problems detected by compare-locales
- The localizer does a signoff (pushes a button for the revision he wants to release) in the dashboard
I may have forgotten some steps, but obviously this is not the perfect setup. I'm keen on helping making things easier as I'm a localizer myself but there are some blockers here:
- I can commit via Narro, but that causes problems because several localizers commit with the same account. I can't let localizers commit with their credentials because that would mean uploading their private SSH key and that defeats the purpose of a SSH key. From my experience, getting rid of that is a real advantage as you often want to fix only a few strings while you're on the road and don't feel like hg pull, hg commit, hg push or don't have Mercurial installed or your SSH key set up.
- I don't have access only to the localization files. I have to pull the entire repository.
- To build a language pack I need the whole repository.
Now don't think that Mozilla is the only software that has this complicated setup. But this localizer tool should be able to cope even with this situation, because it's not a perfect world we live in. It's a challenge.
Thursday, September 23, 2010
Scale up
Narro was designed with one pair of languages in mind. And at that time, running an import on a big project on a modern computer for half an hour was acceptable. The only performance goal was to have a maximum page loading time of 1 second. There was no goal set for the import process.
Back then: 1 target language * 1 big project * 1/2 hours
Times are changing and the instance hosted on Mozilla grew to 61 languages. For each language I run an import on 4 big projects.
Right now: 61 target languages * 4 big projects * 1/2 hours
As you see, running the import process in these conditions is almost impossible, so the much postponed step of optimizing the code is absolutely necessary right now.
Note that the import process is running in background and eating up all the CPU power available on the server.
Fortunately, the code is ready for such optimizations which are:
Back then: 1 target language * 1 big project * 1/2 hours
Times are changing and the instance hosted on Mozilla grew to 61 languages. For each language I run an import on 4 big projects.
Right now: 61 target languages * 4 big projects * 1/2 hours
As you see, running the import process in these conditions is almost impossible, so the much postponed step of optimizing the code is absolutely necessary right now.
Note that the import process is running in background and eating up all the CPU power available on the server.
Fortunately, the code is ready for such optimizations which are:
- cache database results whenever possible
- do stuff only when necessary
- use regular expressions only when really needed
Thursday, April 22, 2010
Is there anyone outhere ?
I know it's been over an year, but development is slowly but surely moving forward.
There's still a hurdle to pass, and that is building an upgrade procedure from 0.9.4, last stable to the upcoming 1.0.
Among the goodies added on the frontend is translations in lists aka mass translation and the ability to import and export from various sources, like another project, a directory, upload, Mercurial, SVN, and so on.
To quote someone famous, version 1.0 will be ready when it's ready, but this post is here to say that development will be accelerated in the next weeks.

There's still a hurdle to pass, and that is building an upgrade procedure from 0.9.4, last stable to the upcoming 1.0.
Among the goodies added on the frontend is translations in lists aka mass translation and the ability to import and export from various sources, like another project, a directory, upload, Mercurial, SVN, and so on.
To quote someone famous, version 1.0 will be ready when it's ready, but this post is here to say that development will be accelerated in the next weeks.

Tuesday, April 7, 2009
Works for me
There's a major release coming up, I can't say just yet if it will be 1.0, but that's where I'm heading at. You can see some progress in the image above.I'm trying to simplify the user interface and the navigation. I'll introduce tabs where possible and remove options that are rarely used. I'm also working on introducing some basic functionalities that were missing so far, like deleting users and projects.
Better import and export is in the works as well, because it's still not working out of the box for everyone who installs Narro.
Once the existing functionality will be cleaned up, I'll address the most important issues from the issue tracker and bring out a release.
In conclusion, works for me is just not enough and works for everyone means just more work.
Thursday, March 19, 2009
Translations of similar texts and other news
The project list should show only what can be worked on, that is translations in progress. If you want you can select which projects to see.

Looking at some projects that I'm not translating, I always wondered if somebody is actively translating there. Well, now I know, on the project list I can see when was the last activity.
Another thing that I didn't like was that If an original text changed in form of adding or removing a punctuation sign, I had an untranslated text again. So I went back to the days where I had an index to search for similar texts.
Better yet, if yhere's no translation, the translations of similar texts appear automatically. You can copy them and adjust them before translating.

Other things planned in the near future are:

Looking at some projects that I'm not translating, I always wondered if somebody is actively translating there. Well, now I know, on the project list I can see when was the last activity.
Another thing that I didn't like was that If an original text changed in form of adding or removing a punctuation sign, I had an untranslated text again. So I went back to the days where I had an index to search for similar texts.
Better yet, if yhere's no translation, the translations of similar texts appear automatically. You can copy them and adjust them before translating.

Other things planned in the near future are:
- storing and using a word count value for texts and translations
- adding project settings, like ignoring some files from templates, adding a custom header for gettext files and so on
- split the Manage page into smaller pages
Subscribe to:
Posts (Atom)