Translation Tools: Transifex? Localeapp?


(Neil Lalonde) #1

Continuing the discussion from Internationalization / localization, which has become a massive, unfocused topic:

Let’s talk about translation tools and the process for getting translations done. If we were going to adopt a third-party tool to get translations done, which should be used? From the Internationalization / localization topic, there seem to be two leaders: Transifex and Localeapp.

Here are the things we need from a translation process:

  • Notifications for translators when there’s work to do, only for the languages they care about.
  • No cost to translators.
  • An easy way to upload our english yml files without clobbering anyone’s work, ideally using an API.
  • An easy way to get all the translations and add them to the Discourse repo in github. We must be able to automate this so it’s a one-click operation!

I played with Transifex briefly, and it seems to have a very nice interface for translators. It has the ability to watch languages, leave comments on translations, tagging, etc.

Does anyone know about automation of this whole process?


Translation workflow
Adding a new language that doesnt exist
(Anton Batenev) #2

We use http://crowdin.net/ for Russian translation (Discourse Open Source Forum translations: collaborative internationalization and simple translation service Crowdin). All fine, but output YML files need a little (automatic) sed processing :smile:


(Patrick Klug) #3

We use weblate.org to do our community-driven translations for Game Dev Tycoon. You can see our installation here. It’s a fairly young project but covers the basics quite well and it integrates very nicely with github (two click process: commit and push to github). We’ve also recently sponsored a feature to allow voting on translation suggestions.


(Erlend Sogge Heggen) #4

Maybe money is not an issue for you guys, but Transifex appears to be offering some kind of special deal for open source projects, although it’ unclear whether it’s free or just more for less:

Crowdsource the localization of your open source project without
limitations in the word count.

Same for Crowdin, not sure about Localeapp. If it was up to me I would definitely factor that in, because those word/string limitations in these plans are pretty harsh.


(Neil Lalonde) #5

The feature list of Weblate is amazing, but there’s no support for yml files. That’s a shame.

Transifex is free for open source projects, and I thought Localeapp was too but I can’t find where it says so.


(Patrick Klug) #6

Might be worth approaching Michal (the dev writing weblate) if he could support YML.


(Sam Saffron) #7

converting yaml to “whatever” is not a big deal on our side, my bigger concern is API and translator workflow


(Erlend Sogge Heggen) #8

Huh? Could you explain the connection between Weblate and Translatehouse please? From what I can tell, they seem to be two separate projects.


(Anton Batenev) #9

But you can loose context information if you convert YML to “whatever”. Equal English phrases can be translated into different phrases in other languages depending on context.


(Sam Saffron) #10

You don’t have to lose any context. You cant translate full paths. Eg: convert

foo:
  bar: 1
  baz: 2
<strings>
   <string name="foo.bar" value="1"/>
   <string name="foo.baz" value="2"/>
</strings>

(Neil Lalonde) #11

I didn’t mention Translatehouse.


(Erlend Sogge Heggen) #12

But your link points to them.


(Neil Lalonde) #13

Oh true. I didn’t even realize I was on a different site.

The Weblate docs link there:

http://docs.weblate.org/en/latest/formats.html

Weblate supports any format understood by Translate-toolkit, however
each format being slightly different, there might be some issues with
not well tested formats.


(glezos) #14

It’s pretty awesome to see Discourse consider Transifex. The platform is 100% free for open-source projects and will always be – more than 6K open-source projects are currently hosted.

I’d be happy to answer any questions and help set things up.


(Erlend Sogge Heggen) #15

@Neil did any further conversations about this happen behind closed doors? I’d say the fact that @glezos is here to represent his app is a pretty big selling point :wink:

I actually dropped the Translatehouse guys an e-mail to tip them off about this thread but I haven’t heard from them.


(Iryna Bi Ilyk) #16

Hi, I’m from Crowdin.

Thanks everyone for your mentions and for the kind words.

How can we help Discourse with localization project settings?

Make sure you reach us in here: support@crowdin.net or me directly if there are any questions, we’re friendly people :slight_smile:


(glezos) #17

@Neil There’s the Transifex client to automate the process, which is usually just run automatically to push/pull the files as often as one wants. Also, there are web hooks to automatically notify your scripts whenever translations are modified.

Setting things up should be really easy – let me know if you have any Qs.


(Neil Lalonde) #18

Thanks a lot for joining this discussion, @glezos and @iryna! I just got back from vacation, so I’ve got some catching up to do.

I’d like to try the Transifex client, but probably won’t get to it today. I encourage anyone to give it a try.

Note that I’m not a translator since I only speak one language, so we really need feedback from translators here!


(J. Bruni) #19

I started translating by editing the source files directly, but thanks to @camilohollanda, at Brazilian Portuguese translation, we are using Transifex. So, I’ve started using it last week.

My first impression and experience was very good: the UI is really good - it works very well, heavily AJAXified, excellent tools for team-related stuff (comments, instructions, suggestions, etc). But the real good surprise is the productivity: I can’t explain why, it just made me speed up the translation. So, thumbs up. I was not even curious to know the tool, and now I really appreciate it, and I am effectively using it.

But, unfortunately, its automatic parsing of the files is not perfect. Through the UI, we can’t see the raw YAML or “.html.erb” files. In order to keep things intact, I have to manually merge Transifex provided downloadable translated file with the actual “original”/“final” translated file. Without this manual step, the resulting “.erb” file is unusable.

But, for me, at least by now, despite this drawback that takes precious time, it worths the benefits from the team tools and the UI that makes the translation itself more dynamic and fast. This is my current opinion about it.


(J. Bruni) #20

Here is a concrete example from Transifex. Look at the section 9 at the Terms of Service here: 301 Moved Permanently (Intellectual Property)

This is how it appears at Transifex:

This Agreement does not transfer from to you any or third party intellectual property, and all right, title and interest in and to such property will remain (as between the parties) solely with . , , the logo, and all other trademarks, service marks, graphics and logos used in connection with , or the Website are trademarks or registered trademarks of or ’s licensors. Other trademarks, service marks, graphics and logos used in connection with the Website may be the trademarks of other third parties. Your use of the Website grants you no right or license to reproduce or otherwise use any or third-party trademarks.

Compare to the original raw file:

This Agreement does not transfer from <%= SiteSetting.company_short_name %> to you any <%= SiteSetting.company_short_name %> or third party intellectual property, and all right, title and interest in and to such property will remain (as between the parties) solely with <%= SiteSetting.company_short_name %>. <%= SiteSetting.company_short_name %>, <%= SiteSetting.company_domain %>, the <%= SiteSetting.company_domain %> logo, and all other trademarks, service marks, graphics and logos used in connection with <%= SiteSetting.company_domain %>, or the Website are trademarks or registered trademarks of <%= SiteSetting.company_short_name %> or <%= SiteSetting.company_short_name %>’s licensors. Other trademarks, service marks, graphics and logos used in connection with the Website may be the trademarks of other third parties. Your use of the Website grants you no right or license to reproduce or otherwise use any <%= SiteSetting.company_short_name %> or third-party trademarks.

All these <%= %> tags and its enclosed variables are lost. (The “cherrypicked” example above exceptionally makes lots of use of it.)