Proposal for Plugins Localization System
Since Nikolay confirmed that nothing has been done, and didn’t say anything about plans (which I assume means there aren’t one), and since there is continuing need for this from both developers and translators, I want to move process from a death point and speed up making of this system.
We all waited enough, we were patient, but everything has its limits. We don’t want this long-term but short-term, and definitely we don’t want to have a bunch of GlotPress installations.
Much, much more time, energy, resources (which all also mean money) are spent now on decentralised, dysfunctional system, than what would be spent on creation of a useful system which would help developers, translators, and users.
I don’t say that what I suggest is good and that should be done just like that, or that isn’t planed same or very similar, but it is a starting point, and since we already don’t have anything, a way for both translators and developers to express their opinions and to push wordpress.org maintainers.
In this proposal, I paid attention to personal experience from both translating and maintaining of a plugin, issues mentioned in the past, existing tools, how hard is to make this, and being future proof.
Proposal
- GlotPress installation at translate.wordpress.org is repository of plugins translations.
-
- New projects are made by one of following options:
- automatically for every plugin
- by “command” in readme.txt (preferred)
- by plugin’s author at admin tab
- For each plugin, every language from WordPress translation project is added with current validators, and with plugins authors as admins. They’ll later have option to add more validators.
- Cron (or whatever its name at plugins repository is) checks if there are changesets since last check, and if there are, generates new POT file and updates strings at GlotPress.
- Each plugin has two branches at GlotPress: Development and Stable. Plugins can have many versions so it’s impractical to have branch for all of them. Also there is no need for translations of older versions since their usage (in term of downloading) is low.
- Since some plugin authors use only trunk for both development and stable versions, there could be only Development branch if there are no tags, or if stable tag is one from trunk. If plugin starts using tags for stable version, Stable branch is created with strings from stable tag. If plugin switches to using trunk for stable version, both Development and Stable tags are updated with strings from trunk while language files are generated from Development branch (there should be option to inform developer about this bad practise).
- Cron checks if there is a change at GlotPress since last check, and if there is, generates a new language files.
- For each language, separate archive file of plugin is created, with language code in name and with translations only in that language (as for WordPress, example for file name is plugin-version-lang_code.zip). For automatic install/upgrade via WordPress, depending on language code of installation, api.wordpress.org will provide link to appropriate plugin version. On wordpress.org site, there will be label that says that default version is in English (US), with link to separate page that lists all other languages (as for other versions now).
Notes
- This proposal suggests usage of existing tools: there is the way to mass create projects, languages and add validators, there is plugins archives generator that is run on 15 minutes, there is a potbot, there is the way to export translations from GlotPress. The only thing that is missing is ability to have per-project admins in GlotPress, and I am not sure if check for changes at GlotPress can be done right now but coding of second shouldn’t be very hard, while for first it can be temporary created without per-project admins who can be bulk added later. So it shouldn’t involve a lot of coding of a completely new code, there is already a basis that should be adapted.
- Folder languages is de facto standardized as a location for translations so POT, PO and MO files should be placed over there.
- This summer, on mailing there was discussion initialized by problem mentioned in first paragraph of this post, and issue of large archives size (because all translations are in it) came up, so solution with per-language archives seemed most logical.
Doktor Bro 6:13 pm on December 10, 2010 Permalink |
Very nice proposal, Milan! The problem is, the Automattic guys don’t see the value of translation as huge as we do.
Milan Dinić 6:40 pm on December 10, 2010 Permalink |
I know very well the fact that lately Automattic cares less and less about localization but my idea is to mobilize community which would maybe force them to do something for us. Now there are two people working on wp.org (including Nacin!) so we could get something done.
Peter Westwood 10:26 pm on December 10, 2010 Permalink |
I not sure how Automattic is relevant to the discussion here?
I care passionately about localization and feel your pain regarding how badly the plugin translation process works at the moment.
I too want to have a solution which allows for plugin translation to be run through GlotPress much like core translation is.
There are also a lot of other improvements I would love to make to the current core process – e.g. switching to separate language pack downloads, make it easier to switch an EN install to another language etc.
Remkus de Vries 10:07 am on December 11, 2010 Permalink |
Great to hear that Peter. How can we, as translators and such, help this process / transition as ultimately that is the question Milan has raised
Milan Dinić 4:11 pm on December 11, 2010 Permalink |
Lets be honest: Automattic is relevant when we are speaking about things related to wp.org infrastructure. Its true that lately, first with Otto and now with Nacin, there is a way for more independent influence but Automattic still has a role.
Thats why I said that what I suggest is future proof, ie. translations will still be placed at GlotPress, we will only need to change way of their distribution.
We can’t wait to have better support at WP’s core, it would mean that this will happen earliest at 3.2, though realistically it would happen later. We can’t wait to add “one more thing”, as Matt said, we need to have something done and later improve it as usage requests it.
Peter Westwood 6:25 pm on December 12, 2010 Permalink
The problem with what you describe above is it will be a lot of work to implement something which is going to then be thrown away – I would rather the time was spent on implementing support for language packs for core/plugins/themes so that we don’t have to keep bundling them together and they can be easier to install/update/maintain/contribute too.
Milan Dinić 7:44 pm on December 12, 2010 Permalink
Just to note that there wasn’t even discussion about language packs (the only mention before your was Nikolay’s) what means this is not decided as something that will be done. Even if decided, we will need to wait at least half a year though probably even longer.
This issue was well-known before it was decided what will go in 3.1 so why there isn’t implementation in core for it?
How can we trust that this will be in core since there are years long issues that still aren’t fixed and there aren’t any indication that they will be soon?
Peter Westwood 11:44 pm on December 12, 2010 Permalink
The best ways to achieve this are: Get involved in the process which defines the features that will get implemented in the next release – i.e. join in the weekly developer chats, help out with the design, coding and testing of the feature.
The community is a meritocracy anyone can have an impact on the next release – how big is up to them
Milan Dinić 1:41 pm on December 13, 2010 Permalink
This is not something that should be decided only by developers, translators also need to take part in decision-making.
For other i18n issue, I was told (I think by Jane) that we should first agree here (at Polyglots) and that then we go to chat with something.
So I’m following that with this post and I don’t see disagreements from other translators so now is your (developers) turn to join and tell us about alternatives, but specifically, not globally.
And just to note that it isn’t like I didn’t do anything about this. On 10th July I posted a comment about proposed team for ” Improving the management of localized plugins” and didn’t get any reply. Also note that this is evidence that even at developer level wasn’t decided to use “core” approach so why I should promote it when it isn’t my idea and I don’t know anything more about it?
As said above and in my previous comment, there is only one mention of “language packs” and there isn’t any detail, so I have no idea how would language packs should work, what means that I can’t even talk about it, not to mention designing and coding it.
My proposal doesn’t involve changes at core, just at wp.org so if you have a better solution you should write it.
I don’t know what should I do to get more attention, I wrote a detailed post covering everything and we still don’t get anything.
Peter Westwood 1:47 pm on December 13, 2010 Permalink
This section of it does:
Currently we don’t send the locale in plugin/theme update check requests.
Improvements take time to envision and implement – please remember that just like your translation efforts a lot of the work done on the core code and infrastructure of WordPress.org is voluntary and done in peoples spare time.
Milan Dinić 9:04 pm on December 25, 2010 Permalink
Since there is no agreement, I created a ticket with request for sending of locale in plugins/themes update check requests in 3.1.
Doktor Bro 7:27 pm on December 10, 2010 Permalink |
The “community” you want to mobilize is a developer community. The don’t care about user friendly front end, they are focused on the back end functions. Code-is-poetry-style. And I know even translation teams that don’t translate the word “email” because of Anglicism disease. I don’t believe the other plugin developers feel how a good translation can improve the daily work for normal users like our mothers.
The only hope I have, Automattic realize the value of localization and hire a real linguistic who can supervise for the polyglot project.
Sergey Biryukov 12:34 pm on December 11, 2010 Permalink |
This is a very nice proposal indeed. I was thinking about something like this myself for a couple of months, though I couldn’t get around to writing it all down so detailed and thought out.
Stas Sușcov 10:03 pm on December 13, 2010 Permalink |
I don’t care about how well is that integrated/synced with svn, I just want to get a way to upload/update my pot file into a GlotPress instance and allow people translate it. This would both: simplify the update/management process and reduce spam (the old/obsolete, or broken/just to test plugins), if a developer cares about it’s plugin localization, he will upload the pot (generated from plugins directory)!
Stas Sușcov 10:03 pm on December 13, 2010 Permalink |
I don’t care about how well is that integrated/synced with svn, I just want to get a way to upload/update my pot file into a GlotPress instance and allow people translate it. This would both: simplify the update/management process and reduce spam (the old/obsolete, or broken/just to test plugins), if a developer cares about it’s plugin localization, he will upload the pot (generated from plugins directory)!