Localization on Crowdin

Topics: Localization
May 31 at 11:10 AM
Edited Jun 27 at 11:44 AM
TL;DR: To see the most important details about Orchard localization, please see the updated Localization page on the project website.

As you may now (or if not, now you'll now) that the localization tool on the project website had to be shut down due to performance reasons. I was looking at some external tools that could replace it and at the moment Crowdin looks like a great candidate.

I initialized a project on Crowdin and received approval off the staff about the project being open-source, which means that the service is free of charge for Orchard. After discovering the capabilities of Crowdin I can say that the localization process and environment will have all the capabilities of the old tool and much more, which means that the workflow for editing translations will remain the same, plus we'll have a lot of additional features.

The project URL is: https://crowdin.net/project/orchard-cms

But please understand that I'm not giving write access to anyone until the project setup is complete and every translation that we already have from old tool is uploaded and verified, to make sure that we don't step on each other's toes. There's an issue with uploading our existing translation files at the moment, but I'll resolve it soon with the help of the Crowdin staff. The aim is to move all the translations we have for each language, so we don't lose any data.
I'm really busy, but I'm doing my best to get the localization environment up and running and be ready for contributions as soon as possible.

Another important thing is that generating the language packages requires a specific structure inside the zip file so that the resulting folder structure is compatible with Orchard - that's solved as well!

One last thing to solve is that uploading the already existing translation files does not work at the moment (except for en-US, which is the origin language, that works), because the structure/content of the .po files seems to be a bit different from what Crowdin expects, but I'm in a discussion with the Crowdin support team via email, so we'll find a way to resolve this matter soon. Once that's done, I'll set up all the languages on the project and upload every data that's already produced about the localization and after that you'll able to sign up for access!

EDIT: You can apply for access to the tool in this topic, but please understand that you won't get access until the tool is set up completely to make sure that we don't step on each other's toes and that the translation data we already have remains consistent.

EDIT2: To be able to contribute to the translations, please register on Crowdin and apply to the project.

Please subscribe to this topic to receive status updates if you're interested.
May 31 at 11:51 AM
Great news. that would take away a lot of headaches. And Orchard would be in good company: https://crowdin.net/page/customer-testimonials Probably we could even use this for marketing somehow?
May 31 at 12:14 PM
Can you create the French translation and add me to the project (agriffard)?
May 31 at 12:51 PM
please add me to Italian as well (manudeareal is my crowdin profile name)
May 31 at 1:01 PM

I've created a project https://crowdin.net/project/orchard, (PS. Translation is still pending.)
May I ask you what URL is that project?

  Orchard in each version upgrade, is not it, the merger of some of the modules?
I compared a download package and export of language translation package and found a lot gone.
May 31 at 1:29 PM
I'd like to translate spanish resources.
Please add me.
May 31 at 1:38 PM
Edited May 31 at 1:38 PM
The project URL is: https://crowdin.net/project/orchard-cms

But please understand that I'm not giving write access to anyone until the project setup is complete and every translation that we already have from old tool is uploaded and verified, to make sure that we don't step on each other's toes. There's an issue with uploading our existing translation files at the moment, but I'll resolve it soon with the help of the Crowdin staff. The aim is to move all the translations we have for each language, so we don't lose any data.
I'm really busy, but I'm doing my best to get the localization environment up and running and be ready for contributions as soon as possible.
May 31 at 2:04 PM
I think discard some incorrect translation is necessary.

You can use the vote to decide which is better.


crowdin.net download package seems to be all the language, do not know how to set a download only one language.

PS, use tools to upload, you can automatically set the download path

project_identifier: orchard
api_key: your key
base_path: D:\My\Documents\My Web Sites\OrchardTranslate\Sources

    source: '/App_Data/Localization/en-US/*.po'
    translation: '/App_Data/Localization/%locale%/%original_file_name%'

    source: '/Core/App_Data/Localization/en-US/*.po'
    translation: '/Core/App_Data/Localization/%locale%/%original_file_name%'

    source: '/Modules/**/App_Data/Localization/en-US/*.po'
    translation: '/Modules/**/App_Data/Localization/%locale%/%original_file_name%'

    source: '/Themes/**/App_Data/Localization/en-US/*.po'
    translation: '/Themes/**/App_Data/Localization/%locale%/%original_file_name%'

crowdin-cli upload sources
May 31 at 3:05 PM
I'm ready to contribute for Persian translation once you finished setup process.
May 31 at 4:44 PM
Hi, I want to continue the Spanish translation. So please as soon as you're ready to publish the Spanish translations note me.

Add my Crodwin translation account to the project if you need to do it: CSharpMan

Jun 2 at 6:58 AM
Let me know about Greek: sroussos (Crodwin account)
Jun 2 at 10:33 AM
I would like to translate Spanish part if it is possible.
Jun 4 at 4:20 PM
Count me in for German and Polish :)
Jun 5 at 1:44 PM
Edited Jun 5 at 1:45 PM
Meanwhile, is there possibly a way to download the old version of the translations? A Zip file would be plenty...
Jun 12 at 4:31 PM
What's happen to old resources?
Jun 13 at 12:03 PM
Jun 13 at 6:39 PM
Edited Jun 13 at 6:42 PM
Is the Chinese translation port possible to be merged to your official Crowdin project later?
Jun 14 at 11:19 AM

Should be merged,
However, the "translation memory" seemingly can not be combined, so the project may be reserved.

PS, there is a need, then you can add other languages​​, just a language I did not complete.
Jun 14 at 7:10 PM
I'm ready for Persian (fa-IR).
Jun 16 at 10:43 AM
What a great news! please add me to the Arabic translation when you are ready
Jun 16 at 2:30 PM
Any update on this? No activity has been seen for 2 weeks.
Jun 16 at 2:41 PM
Build seems not automatic,

The reason may be to proofread.
Jun 16 at 7:48 PM
Edited Jun 16 at 7:49 PM
Build is not automatic as far as I can tell, but I'll see if that's possible. Not sure what do you mean by merging, but completing the setup will also involve the uploading of all the already existing translations (Chinese included, of course) that was available in the original translation tool. That's why it's not allowed yet to translate anything - to avoid inconsistency.
Jun 23 at 11:21 PM
Edited Jun 25 at 9:37 AM
Status update, good news!
  • Setting up the Crowdin project is going great, all the "master" (en-US) strings are uploaded. Crowdin has a nice API that makes automating this process (as well as uploading the translations) much-much easier than doing it by hand, but I had to run a PHP script in IIS to do that (so I feel a bit dirty now :D).
  • I'll write and test the script for uploading the existing translations for each language tomorrow.
  • There's a slight issue though: the current "plan" for the project on Crowdin has a limitation in terms of the localizable strings, so I contacted the support about it (we are currently in a free plan provided for OSS-projects).
Jun 24 at 2:11 PM
Edited Jun 24 at 2:19 PM
An other status update, even better news!
  • The limit for the amount of strings has been raised by the support on Crowdin, so that problem is solved.
  • Basically the tool is set up and ready for translations! Only the Lithuanian and Slovenian translations are not uploaded for some reason (I'll try to figure it out), but everything else works fine.
  • I'm handing out the permissions now!
  • Build is not automatic - that's confirmed, but it's possible to trigger it trough the Crowdin API, so it's not a big deal to build the project once a day automatically.
  • If you want to contribute, please register on Crowdin and apply to the project!
Jun 24 at 2:33 PM
HI, nightwolf226

Can share your PHP script? Thank you.

Some older parts should be removed, for example, "Contrib.Taxonomies" "Orchard.Taxonomies"
Jun 25 at 9:47 AM
Edited Jun 26 at 2:08 PM
@Gyc: sure, send me an email to benedek/at/farkas/dot/lombiq/dot/com and I'll send it to you in reply.

Btw we have a total of 20 translators at the moment on Crowdin, the number is growing steadily!

I demoed the current state of the localization tool yesterday on the weekly meeting and a question was raised: maybe we should separate the deprecated modules from those that are currently in the Orchard source (and actually I think we should do that with the modules/themes from the Gallery). Here's what it would look like:
Currently the package contains the top-level folders: App_Data (root), Core, Themes, Modules.
I'd add an other level of folder structure to the top: Source, Deprecated, Gallery and all these 3 would have the same sub-folders as above.
  • Source: all the stuff (themes/modules) that are included in the latest Orchard source, except for those modules that are marked as deprecated (they are in the "Deprecated" solution folder).
  • Deprecated: all the modules that are in the "Deprecated" solution folder in the latest Orchard source and those modules that are not in the Orchard source anymore.
  • Gallery: themes and modules from the Gallery.
This is achievable with some configuration on my end on Crowdin, translators won't need to change/adapt anything. What do you think?
Jun 25 at 10:23 AM
Edited Jun 25 at 10:24 AM
I'm also making some changes right now to the folder structure on Crowdin by removing the /App_Data/Localization/ folders from the translation list to make it (e.g. this one) cleaner. The downloadable packages won't be affected, those two folders will be added automatically when project is built.
Jun 25 at 2:28 PM
And there's a cool feature I forgot to mention yesterday. :)
Regional dialects are automatically filled in when you download a package. What does it mean? Let's see an example: currently Bing.Maps is translated to Spanish (es-ES), but not to Mexican Spanish (es-MX). If you download the es-MX package, the strings will be filled in from the es-ES strings. Of course if someone translates those es-MX strings then they will override the es-ES ones.
Jun 25 at 3:16 PM
I don't think that using a non free solution is a beneficial decision. We're using Orchard because it's 100% based on a permissive license. Now translations suddenly need to maintained on a paid service.

So to maintain translations for our own modules we now need to pay $1,668 per year to keep translations on the same platform used by Orchard. Which seems quite expensive, e.g. when compared to whole Azure A2 instance for just $1,296 per year.

Jun 25 at 3:32 PM
Edited Jun 25 at 5:18 PM
Well, there's not much to do now, the discussion about it is going on for approx. one and a half months. We chose Crowdin because it's free for OSS projects and provides a great feature set that satisfies our needs.

Actually you are not forced to use Crowdin, just because Orchard has migrated to it. The module that was working on orchardproject.net is also available/open-source (https://bitbucket.org/bleroy/orchardpo/overview), so you can set up an Orchard instance for yourself to translate strings and manage localization for your modules. Unfortunately it's a bit outdated, but works OK with Orchard 1.6.
Jun 25 at 3:35 PM
To clarify: you can continue to host your open source modules' translation together with Orchard, just as before. Nothing regarding this changes, nobody has to pay and no related license changed.
Jun 25 at 3:43 PM
Before I could run the translation tool on our own server, and was still able to stay in sync with the official translation. Now this option is gone - I'm either forced to pay an overpriced service or maintain translations disconnected from the overall orchard development.

Crowdin free is not compatible with the New BSD license. Really strange that the "steering committee" approved such an incompatible approach.
Jun 25 at 3:56 PM
What do you mean? You can still use the translation tool on your own server, if you're willing to maintain it. You're not forced to use Crowdin for your own translation just as before you were not forced to use the OrchardPo module. You can use any tool that can handle .po files you like, and again, you can also use Crowdin freely for your OS modules and themes just as before, and your modules' translations can be managed together with other Orchard translations in one package, just as before.

Where is the incompatibility? I don't understand how the terms of use of a service we use should be compatible with the license of Orchard (if this is what you mean by "Crowdin free is not compatible with the New BSD license"): Crowdin is an external service that helps our work (so we can focus on a) developing Orchard and b) create translation instead of maintaining a translation tool that would be costly to fix and maintain), just as continuous build is provided by TeamCity. But you're not forced to use TeamCity yourself and it doesn't matter that TeamCity is not Simplified BSD, right?

All that said this debate is irrelevant: the decision has been made after bringing up the matter, as Benedek said, almost two months ago, here on the forums and on the weekly meeting (what you can watch and read its summary, what also mentioned the localization issue).
Jun 25 at 4:13 PM
This thread starts with "environment will have all the capabilities of the old tool and much more,". I trusted that claim, and now I had to learn that the claim was wrong. The old tool could be used to maintain our translations on our server. The new tool doesn't have that capability. The old tool can be used to maintain BSD licensed translations for free. The new tool doesn't allow to maintain them for free.

But I understand that you're not interested in debating.

It's probably just me - again being disappointed by the nontransparent "decision" process. Why isn't there any list of pending decisions? Or one list of decisions being made? Or maybe a forum to discuss pending decisions openly? Or even to vote for options?
Jun 25 at 4:36 PM
The claim is true, the new tool is better. Again, you can use it for your projects for free: either we manage it for you just as before or you can create your own translations completely independently ("The old tool can be used to maintain BSD licensed translations for free. The new tool doesn't allow to maintain them for free." This is false because, again, Crowdin is free for OSS projects). Again, you can use it in the same way to host your translations together with Orchard's.

Again, you can continue to use the old tool on your own server if you wish. We ditched the old tool because it would be too much effort to fix it, update it from Orchard 1.6 and maintain it. Are you willing to write and maintain a reliable translation management tool when we can use one for free? Go for it but don't be surprised if everybody else has something better to do.

You're right that how decisions are made and which questions are up to debate is not clear enough. However I can't understand how the decisions themselves are non-transparent for you because again, this was clearly announced here on the discussion board and discussed in length on multiple occasions during the meetings.
Jun 25 at 4:50 PM
Edited Jun 25 at 4:50 PM
Are you willing to write and maintain a reliable translation management tool when we can use one for free?
If somebody would have asked I'd answered that somebody of my team can spend some time on improving the old one. Which is something we now have to do anyway.

I think just announcing decisions here after they are made is not really what I'd classify as collaboration.

The problem with the weekly meetings is that

a) they are at 12PM Pacific time - nobody of my team works at that time. So we can't attend.

b) we never organize our internal meetings without an agenda as without they are usually not efficient. I never managed to find an agenda for the next online meeting.

So wouldn't it be better to have a dedicated forum to discuss pending decisions?
Jun 25 at 5:06 PM
Come on, do I have to write again that this was announced here two months ago? Not the decision, the plans. Scroll up.

There is no sign from you wanting to maintain the localization tool: you have zero interaction with its project page (no pull request, no issue report, you're not even watching it). You haven't said anything in this topic up until the migration was completed. I hope you see that it's tough to tell from this that you really like the old tool and want to keep it? You have the option to watch the meetings since they're recorded for two years BTW.

You're right that an agenda in advance would be better, and generally there is a lot of room for improvement in Orchard's project management that we all have to work on. But if you want to keep up with the project's direction, you can, even if you don't attend the meetings. We also routinely discuss matters that were brought up on the forum or the issue tracker without the original poster being there. Your voice is heard, but as the Hungarian proverb says "even the mother can't understand a mute child".
Jun 25 at 5:11 PM
Edited Jun 25 at 5:19 PM
I really don't understand the problem here.
You were using an external tool (from your perspective) until now too, the one on orchardproject.net. The difference now is that it's a different tool that is hosted somewhere else, but it knows a lot more (because there's an entire team developing it). Nothing crucial has changed and if you want to add the translations of an open-source module to the tool, it's entirely possible with the now tool too (not to mention that it's easier and faster). Besides, upgrading the translations for a new Orchard version is also much safer and faster (remember, the old tool was not updated since 1.7.0).
And if you want to localize your modules that are not open-source, you can still do that in a private Orchard instance on your server (like I said it works with Orchard 1.6, so there's no problem there; if you want use it with a newer version then it needs some work, for which unfortunately we don't have time at the moment).

The discussion about the choosing the new tool was also open, there's a dedicated mailing list for the localization (actually it was one of the members who contribute to the translations suggesting Crowdin). It was also discussed on the weekly meetings and I record each one and publish the video on YouTube (plus report it here in the forums and on the project homepage).

So every bit of communication regarding this matter was open. The decision was basically made by me but backed by the Steering Committee, because I'm in charge of the localizations and I had volunteered to spend time with it, thus I had the most insight to this matter - but it is/was entirely possible to chime in for anyone via multiple channels.
Jun 27 at 11:43 AM
Edited Jun 27 at 12:00 PM
Updates again!

To see the most important details about Orchard localization, please see the updated Localization page on the project website.

I opened two discussions in the UserVoice of Crowdin, please check them out and vote if you'd like them to be implemented:
Jun 27 at 11:22 PM
Edited Jun 27 at 11:22 PM
Hi, I've finished Spanish Translations.

Thanks to Crowdin It was fast and easy. More productive than the old tool.

Thanks a lot for the efforts to migrate to Crowdin.

Jun 28 at 6:58 AM
That's great Alberto and thanks for the feedback!
The French and Chinese translations are also very close to completion.
For the strings to be included in the downloadable packages, you also need to "approve" them by going to the Proofread page of each translation file, then click "Approve All" (or alternatively you can approve them one by one if you want to check/validate them). That's why the progress bar shows some of the strings in blue colour, after approving they will turn to green.
Jun 28 at 7:18 AM
Edited Jun 28 at 7:19 AM
Hi Benedeck,

Great work, thanks. Finally a good idea.
Could I apply for french.

My username is csurieux.

PS: Also ready for Klingon and Latin when you open them.
Jun 28 at 8:19 AM
Now all the Spanish translations are approved.
So you can see the Spanish Flag next to Hungarian one
Jun 28 at 6:29 PM
@Alberto: nice! :)

@Christian: please check the Localization page on the website for instructions: http://orchardproject.net/localization
Apply for French translations, after that I'll be able to add you to Latin and Klingon too!
Jun 29 at 7:02 PM
Is anyone interested in translating Orchard to LOLCAT?

Be careful about what you enter, because:

Btw Pirate English is also available, yarr!

Happy translating!
Jul 1 at 6:21 AM
Is it normal that I get confirmation emails for ppl who want to join the 'Dutch, Belgium' culture?

Also, it seems like I can remove users (who are part of the 'Dutch, Belgium' team) their contributions: I haven't tested this for obvious reasons, but it sure looks like it?
Jul 1 at 8:46 AM
Yes, that's because you're (and everyone else) is in proofreader role for their language(s). This means that you can accept the requests for joining the localization team and manage the translations (proofreading = verifying the translations is required for the new strings to be included in the downloadable packages). If you don't want to receive email notifications, you can change your email settings.
Jul 2 at 10:41 AM
Edited Jul 2 at 10:43 AM
Where can we take about stuff that should not be translated?
Like "Stack Trace", comment on crowdin:
(Looks like Codeplex has a linking problem, with #.)
Jul 4 at 5:10 PM
Edited Jul 4 at 5:11 PM
@Stephan: the built-in tools of Crowdin allow you to discuss such matters, e.g. the context of an expression and how to translate it.

Good news again! The translation tool is now updated with strings for Orchard 1.8.1!

Btw did you notice that on the pictures above the cats are different, but the laptop and the environment are the same? :)
Jul 10 at 5:22 PM
Update: Piedone.Combinator updated to its latest source (30 new strings).

I also added the 3 new folders to the top of the folder structure as I mentioned in one of my previous posts.
Jul 18 at 9:54 AM
I'm currently trying to complete the Italian translation for 8.1 and I would thank all the team for the choice of Crowdin tool. It is very nice and translation moves fast.

A couple of suggestion from the field:

1) I would move in a separate project the Gallery part of the tool. Only few modules are there, most of them are not updated, rarely used or obsolete. Having gallery modules on core lowers the completion score of the overall translation (eg. Italian is now 94% for souce but since most of gallery modules are not translated yet score lowers to 84% and seems that translation is more incomplete than is).

2) not all the strings that are on crowdin are loaded in orchard, eg. the theme description is not translated even if the translation are there, all the module descriptions in module list are not translated even if the strings are translated and are there. This may be a problem with code or a mismatch in key link. I'm doing more checks going on with translation and maybe I will find more untranslated strings.
Jul 21 at 2:16 PM
Hey @manudea,

your suggestion is quite valid and if I remember correctly, it's already "in the hat". The problem with this is that it basically doubles the administration time of the project, since for example translators have to be added to both project. But you're right about the outdated modules causing lower value in completion of the translations. I'll bring up this question tomorrow on the community meeting.

About the translations not displaying: could definitely an issue with the keys, even the leading/trailing quote characters cause a difference there. Please share what you find, so we can see to fixing it, thanks!
Jul 21 at 2:44 PM
well I do not think that moving out Gallery modules would add any extra work on admins... we are talking about modules that are not part of the core and are already in a different place. I would keep on main project just what is on current Orchard git (and maybe some old deprecated module that is already translated and will not be changed in future...). Translators will be added only if they specifically require to translate gallery too...
Does crowdin supports subprojects? that would be a solution... :)

For the keys not picked up I will further dig it and I will let you know, thanks...

Jul 23 at 9:15 AM
Edited Jul 23 at 9:15 AM
What I mean is that it would extra work to the administrative tasks of the Crowdin projects and I am the one who's maintaining it/them. :)
Crowdin doesn't support sub-projects (but I opened a request about it on their UserVoice page).
Btw we've talked about it yesterday on the community meeting (video will be up soon) and the conclusion was that the Gallery modules should be moved to a different Crowdin project. I'll talk to the Crowdin support about it if we can get an other Crowdin project for free like the current one and if we get a positive answer, I'll perform the migration of the Gallery modules' translations in the next few weeks. The modules/themes from the current source plus the deprecated modules would remain in the current project.
Jul 23 at 3:18 PM
Edited Jul 23 at 3:18 PM
Excellent... you rocks! :)

btw: this way Italian translation is 100% (we just miss some gallery modules but all core and deprecated are 100% complete :)
Jul 23 at 3:33 PM
Cool, sounds great and thanks! :)