Michal Čihař - Archives

phpMyAdmin in GSoC 2012

As student application period of Google Summer of Code 2012 is over, it's time to look at proposals we got for phpMyAdmin.

First of all we got slightly less proposals than in past years (38 this year, 52 in 2011 and 68 in 2010). This is probably related to the fact that we heavily focus on code cleanup this year and this is definitely not that interesting topic as adding new features. I think quality has also slightly improved, but still there were few completely bogus applications for totally unrelated projects.

Also as usual, people tend to leave submission for very last date:

Number of applications over time

(and then complain, that they don't have enough time to submit patch as described in our applicant guide).

Quite unsurprisingly the most interesting topic seemed to be frames removal, where we got few really good proposals. You can see how other topics were frequent in following chart:

Number of applications for various types

Please note that the numbers are not 100% accurate as some proposals really did not fit into above categories.

Anyway we're just waiting for last people submitting patches today and evaluation will finalize in upcoming days. Of course you will know the results from Google on April 23rd.

Why weblate?

I still get lot of questions why I wrote Weblate instead of staying with some existing solution. Most of the reasons were already addressed in previous posts, where I looked for Pootle alternative or announced Weblate, but still it might be worth to summarize reasons once more.

Git integration

None of existing tools integrate with distribute version control, while I find this integration somewhat obvious and necessary. Having translation system as one of remote branches makes things really easy to handle for developers. Merging translations is nothing more than git merge.

Attribution to translator

I think it's fair to request that translator gets appropriate attribution for his contribution. Once we rely on Git, it is quite obvious that he will be author for Git commit doing changes. This way you can find author purely with Git and don't need to look for other tools.

Handling of several branches

In phpMyAdmin we heavily use branches to maintain stable releases. On the other side we want to be able to push translations to both stable and testing branches without translators having to do the work twice. Weblate does automatically push changes to all branches. Well this is not limited to branches but to subprojects as they don't have to be only branches, they can be also just related projects like with Gammu and Wammu.

Displaying context

Most of tools I tried fail to provide way to show related source code even when Gettext po files contain such references. With Weblate this is just matter of configuring URL of viewer, what nicely integrates with existing services like Github.

Sane merging of uploaded translations

With Pootle, it is possible to upload incomplete po file and it will luckily take it and replace existing one. This is quite dangerous as you would not notice it is incomplete unless you do some translation validation before release. Weblate does merge uploaded translations unit by unit, what makes it slower, but generates minimal diff and works also across branches.

Consistency checks

There are always things which can go easily wrong in the translation like format strings and translation tool should catch these as early as possible. Weblate semi-enforces checks - if check has failed, you will be redirected back to previous translation to possibly correct it (or mark check for ignoring). At current state checks are not as good as I would like to, but they are completely modular and can be easily extended and improved.

Bonus points

While working on Weblate I realized that some things could be done even better than I originally anticipated. For example with Github web hooks, it is possible to receive notifications on upstream repository updates and merge changes as they appear, leaving to really live translation process. Git allows to write custom merge drivers and this can be utilized for less merge conflicts on po files (they are usually caused by timestamps in headers), so that's another handy you get with Weblate.

Of course there is much more built in, just check the documentation.

Weblate 0.8

After quite big delay, Weblate 0.8 is finally ready. There are many fixes and improvements like grouping of Git commits, improved checks or activity logging. All in all this should be feature complete for 1.0 release.

Now it's time to stabilize all the features and release 0.9 (AKA 1.0rc) and then we'll be ready to fire 1.0.

Full list of changes for 0.8:

  • Replaced own full text search with Whoosh.
  • Various fixes and improvements to checks.
  • New command updatechecks.
  • Lot of translation updates.
  • Added dictionary for storing most frequently used terms.
  • Added /admin/report/ for overview of repositories status.
  • Machine translation services no longer block page loading.
  • Management interface now contains also useful actions to update data.
  • Records log of changes made by users.
  • Ability to postpone commit to Git to generate less commits from single user.
  • Possibility to browse failing checks.
  • Automatic translation using already translated strings.
  • New about page showing used versions.
  • Django 1.4 compatibility.
  • Ability to push changes to remote repo from web interface.
  • Added review of translations done by others.

You can find more information about Weblate on it's website, the code is hosted on Github. If you are curious how it looks, you can try it out on demo server. You can login there with demo account using demo password or register your own user.

Weblate is also being used https://l10n.cihar.com/ as official translating service for phpMyAdmin, Gammu, Weblate itself and others.

PS: If you're about to use Weblate, rather use Git version than tagged 0.8, you will get bunch of bug fixes for free :-).

phpMyAdmin translations status

phpMyAdmin 3.5 should be released this weekend, so let's look at translations status for last time before release. Here comes seventh round of translation status update.

Since last update we have one more translation and one less (due to some not translated strings in it) summing up to 11 translations at 100%:

  • Czech
  • Dutch
  • English (Great Britain)
  • French
  • Greek
  • Japanese
  • Russian
  • Slovenian
  • Spanish
  • Swedish
  • Turkish

There are few which are really close to 100% and I hope they will get there till release:

  • Chinese
  • Danish
  • Estonian
  • German
  • Italian
  • Polish

As you can see, there is still lot of languages missing, this might be your opportunity to contribute to phpMyAdmin. Also you are welcome to translate phpMyAdmin 3.5 using translation server.

phpMyAdmin in GSoC 2012

You have probably noticed that phpMyAdmin is again participating in Google Summer of Code 2012. This year we don't want to bring dozens of new features like we did in past year, but rather to improve quality and maintainability of existing code. This is all in sync with our plan for phpMyAdmin 4.0.

So if you are student interested in improving phpMyAdmin and have knowledge of PHP (especially with some refactoring experiences), you would be welcome to join us. More information is available in our applicant guide.

PS: Please note that for removal of frames we already have few applications right now, so you might want to focus some other parts to have higher chance to get accepted.

Quality assurance of translations with Weblate

One of features I wanted to introduce with Weblate is ability to do some quality checks while translating. We want contributors to have easy access to translating, but still we need to ensure some quality of translations. That's why Weblate comes with set of quality checks which are performed on every translation unit. The current set of checks (see documentation) is pretty basic and more might be easily added in the future pretty easily.

There are two ways how checks are used in Weblate. During translating, if any of checks fires, translator stays on current translation with warning that something might be wrong. This is not a hard error as he still can be correct, but should at least prevent accidental mistakes like corrupted format strings or missing trailing colon.

The other way is to do review of a translation. Failing checks are shown on each translation page or you can browse them by project to give you overview what can be wrong.

For example with phpMyAdmin this helped me discover that there were few languages where almost half of translated strings are actually not translated but simply copied from English. There were also other problems like inconsistent translations across branches. All in all using these features helped me to improve quality of translations in phpMyAdmin quite a lot and I hope we will keep it for the future.

phpMyAdmin translations status

phpMyAdmin 3.5 should be released on April 7, 2012, so let's again look at translations status. Here comes sixth round of translation status update.

Since last update we have two more translations summing up to 11 translations at 100%:

  • Czech
  • English (Great Britain)
  • Estonian
  • French
  • Greek
  • Japanese
  • Russian
  • Slovenian
  • Spanish
  • Swedish
  • Turkish

There are few which are really close to 100% and I hope they will get there soon:

  • Chinese
  • Danish
  • Dutch
  • German
  • Italian
  • Polish

As you can see, there is still lot of languages missing, this might be your opportunity to contribute to phpMyAdmin. Also you are welcome to translate phpMyAdmin 3.5 using translation server.

Roadmap for Weblate

There were no big updates from me on Weblate this week. I decided to settle down a bit and focus on bringing it close to 1.0 release. I plan to release 0.8 in one or two weeks, which should include all features. After it receives some testing and bug fixes, 0.9 will be released and if no major problems occur 1.0 will follow shortly.

Right now most of the core for all features is prepared, just some user interface is missing for most of them. The 0.8 release will come with rewritten full text search (now is based on Whoosh), changes tracking (for possible review of changes made by others) and built in dictionary for frequently used terms. Along with these changes there are smaller ones as well like improvements to various consistency checks, cleaned up translate page or faster loading of translation services.

Anyway if you feel something is done wrongly, it is now last chance to complain so that it is possible to do some bigger change for 1.0 release.

Weblate 0.7

Continuing at same pace (one release every two days), I can announce Weblate 0.7. The major change is built in full text search and displaying of context for currently translated message (either based on location in po file or by string similarity based on full text data).

Full list of changes for 0.7:

  • Direct support for GitHub notifications.
  • Added support for cleaning up orphaned checks and translations.
  • Displays nearby strings while translating.
  • Displays similar strings while translating.
  • Improved searching for string.

You can find more information about Weblate on it's website, the code is hosted on Github. If you are curious how it looks, you can try it out on demo server. You can login there with demo account using demo password or register your own user.

Weblate is now also being used https://l10n.cihar.com/ as official translating service for phpMyAdmin, Gammu, Weblate itself and others.

Weblate 0.6

Continuing with fast release pace for Weblate, I've just released version 0.6. It brings few bug fixes adds quality checks for translations and configurable access control.

Full list of changes for 0.6:

  • Added various checks for translated messages.
  • Tunable access control.
  • Improved handling of translations with new lines.
  • Added client side sorting of tables.
  • Please check upgrading instructions in case you are upgrading.

You can find more information about Weblate on it's website, the code is hosted on Github. If you are curious how it looks, you can try it out on demo server. You can login there with demo account using demo password or register your own user.

Weblate is now also being used https://l10n.cihar.com/ as official translating service for phpMyAdmin, Gammu, Weblate itself and others.