Building the GlotPress Translation Manager

Currently we have a new header/breadcrumb design which looks better then we had before. It takes up a little bit more height but in return we now have a menu where you can add links if wanted.

Due to this redesign the output of gp_breadcrumbs is a list now and styling will be applied on display. Still makes adding new items easier since you don’t need to know the styling. Also the action after_hello got removed.

Other updates are:

Show login after installation again and after that redirect to the home page

Make warnings for newline mismatches more verbose.

Ready to commit a patch for gp_title

Currently working on favorites/watched projects and decline with feedback.

The upcoming week lot’s of code changes will happen. When you keep up-to-date with the latest code of GlotPress, it is recommended to not do this directly on production in the next days. Specially when you have custom code or theme. I would appreciate you guys testing things out and leaving feedback during this week.

My focus in random order is:

new header with navigation

redesigned breadcrumbs

Changes in gp_title

favorites

notifications

reject with feedback

Move BackPress to GlotPress

If you feel something is missing then let me know and I will see if I can manage to get something done on that too. Otherwise I will let you know when I think I can work on it. Also if you want to help out, let me know here or ask in the GlotPress Slack channel on WordPress Slack

It has been a long time goal to have a regular meeting but till now I couldn’t find the time that I would able to be there most of the time. After rethinking the time from comments, I decided to set up a weekly meeting at 12UTC on every Thursday starting this week.

This first meeting we will discuss how to notify Validators and translators for important changes. I just created two tickets for a Notification Center and for Favorites. This will help us out with sending out notifications and building up a user dashboard. In the next couple of days I will work on this so we can discuss the progress.

In the last year there were several discussions about the design of GlotPress. I tried to use bootstrap to make it nicer but what we really need is a complete rewrite of the theme. For this purpose I created a repo on GitHub where we can build a fresh new theme that fits our needs. Also Aris Blevins already created some mockups how the translation flow could work. This is also linked on the GitHub channel.

If you want to help out just leave a comment and check out https://github.com/GlotPress/New-Default-Theme. You can create tickets with ideas and things you would like to change.

So it has been quiet for the last two months. Only some small changes have been made to the code. But before going into this years plans I first want to thank all the contributors from last year: yoavf, Secretmapper, vanillalounge, nacin, nbachiyski, DJPaul, koke, dimadin, juanramondiaz, wonderboymusic, stuwest, extendwings, Nao, ocean90, knome, joostdevalk, waclawjacek, cfoellmann, ramiy, hew. And that is without mentioning the people who submitted still waiting patches and tickets. It was a good year where great improvements where made.

So for this year already quite some tickets and patches have been created and I will try to review this month. There will be three focus topics for this year which are increasing contributions, build a new default theme and rebuild part of core (to increase performance).

To increase the amount of contributors we will try to be more proactive when tickets, patches and issues are raised so people feel more connected to the project. Also from March there will be a weekly meeting where we can sync planning and work on new ideas. currently I’m thinking to do this meeting on Thursdays at 15:00 UTC. If you have suggestions then please let my know. I will create blog posts for the other two topics.

As last, from this point on I will be actively leading the project. Due to the fact that we have active contributors now, it also means that my role need to be active instead of committing things that I like to work on. Also GlotPress has become more important for open source projects and there is a lot of things that could increase the usability of GlotPress.

As promised in last update we will now have monthly update post. The biggest change is that since this weekend we moved to PHP 5.3. While we adding new features, we also clean up the code and this time we starting to deprecate our lambda function and now moving to anonymous functions which got added in PHP 5.3.

Unfortunately we didn’t manage to do the things on our roadmap due to fixing some important bugs. But I’m sure that some of those bugs will make you guys happy. I finally had the time to dig into the caching issue of the translation set counts and fixed it. We also currently hidden public profiles but that will be back in a few days.

Changes made

Invalidate the translation set cache when approving/rejecting a string.

Increased performance of profile pages.

Disregard context if it’s any falsy value.

Fix going to the previous translation with the keyboard.

Move to the next translation when approving/rejecting a string.

Reduce the size of index ‘singular_plural_context’ for originals.

Added a link on users profile page to his translations of that translation set.

Fix guess_uri() for subdirectory installations.

Fixed not exporting translation comments for PO files.

Don’t fatal when hitting a projects page where the parent project has been deleted (work in progress).

Remove RRC format.

Stop using lambda function and start switching to anonymous or normal functions.

In the last year things got changed and improved. Lately things are speeding up and part of that we decided to move to PHP 5.3+ because we want to move away from create_function() and start using anonymous functions. For the current patch you can check out https://glotpress.trac.wordpress.org/ticket/305

The current patch will be committed this week and from there we will start looking at other functions that are still calling create_function().