Big News: FounderDating is joining OneVest to build the largest community for entrepreneurs. Details here
Latest Notifications
You have no recent recommendations.
Name
Title
 
MiniBio
FOLLOW
Title
 Followers
FOLLOW TOPIC

Question goes here

1,300 Followers

  • Name
    Entrepreneur
  • Name
    Entrepreneur
  • Name
    Entrepreneur
  • Name
    Entrepreneur
  • Name
    Entrepreneur
  • Name
    Entrepreneur
  • Name
    Entrepreneur
  • Name
    Entrepreneur

Advice on tools and best practises for multi language web apps?

I would appreciate any advice on tools/services that others have used when it comes to translating your web or mobile app and offering different languages? There are quite a few sites out there that offer translation etc. and I would love to hear of anyone's first hand experience with this.

Cheers!

5 Replies

Jonathan Barronville
0
0
Jonathan Barronville Entrepreneur
Software Engineer at npm, Inc.
@Kate Hiscox:

Are you looking for services that help with the translating or info on how to manage this on the backend of your apps?

I can only answer the latter since I have direct experience with that. When I worked forAi Squared, i18n was especially important for us as the software we werebuildingwas intended to be used by folks globally and our clients also required this. TBH, I don't quite remember where the translations came from, but the way we worked with them was similar to how people do this in Rails and many other tools/frameworks/libraries. Basically, we stored the translations as hashes, where each key would be a unique slug to some string value (they could also be nested). During the initial load of our app, we would load all translations into our main locale hash as the values of their respective locales (the keys). This proved to be a very simple and straightforward model to work with and we just had to make sure we never directly hardcoded any string that would be directly displayed to a user, and instead grab the string based on the selected locale. In fact, we built a minimal code analysis tool to try to help us with this, since it was easy to forget not to hardcode things. It wasn't always 100% on point, but it helped. AFAIK, this is quite a standard (or at least common) model nowadays, but I thought I'd describe it in case you weren't aware of it.

- Jonathan
Dimitry Rotstein
0
0
Dimitry Rotstein Entrepreneur
Head of R&D at SafeZone
My experience is a first hand one, but from a different side. A friend of mine wanted to translate his app to Russian (text and audio), looked for all kinds of translation services but couldn't find anything, or at least nothing good. Then he remembered that I'm fluent in Russian, so he called me and asked for help. I translated the text myself (took me an hour or so) and found someone to voice the audio, all for a pretty symbolic price. If you're interested in the technical side, the voice recording was done with a program that comes with Windows, and I edited the result with the free "Audacity" program.
Joseph Moniz
0
0
Joseph Moniz Entrepreneur
Software Engineer
Hi Kate,


I'm a developer who has personally set up the i18n infrastructure at two separate companies now, so i can speak on the technical implementation and infrastructure side of the house.


In the past i've had the most success implementing GNU's gettext ( http://www.gnu.org/software/gettext/). It's an open source C project that has bindings to multiple languages (PHP, Perl, Python, Ruby, Etc).


All your developers have to do is annotate every string that requires translation with the appropriate gettext function of your implementation of choice (IE: in php they have to wrap each string in _("string here") ).

There are certain practices your developers should follow when wrapping these strings. For example, they should wrap entire pieces of copy in a single wrapper and avoid fragmenting them into multiple wrapped calls. This will result in translators providing the most appropriate translations as they have the full context of what they're supposed to be translating. If a developer must inject some dynamic content into the middle of a huge corpus of translatable text they should use the parameterized string method in the language of their choice and pass the result of that to their gettext() wrapper.


Gettext has a suite of tools which your developers can use to scan their source files for strings that need to be translated and generate industry standard MO and PO files. Non developer business users can also extract these strings that need to be translated via tools such as POEdit ( http://www.poedit.net/).

The best part about MO and PO files are that they are an industry standard. Most 3rd party translators are familiar with the tools to work with them and a good majority even prefer this format. The other upside is that the tools such as POEdit are so simple to use that if you have an in house business user willing to do the translations for you it's easier enough for them to pick up the GUI tool and start translating for you with minimal friction.


- Joseph Moniz


"Wake up early, Stay up late, Change the world"
Kate Hiscox
0
0
Kate Hiscox Entrepreneur • Advisor
Boss at Venzee
Thanks all! ?
Panos Kougiouris
0
0
Panos Kougiouris Entrepreneur • Advisor
Founder at NeatSchool
Hi Kate, this is a service I highly recommend. I know the CEO personally contact me if you reach a point you need any more help. https://www.transifex.com/ Best, Panos
Join FounderDating to participate in the discussion
Nothing gets posted to LinkedIn and your information will not be shared.

Just a few more details please.

DO: Start a discussion, share a resource, or ask a question related to entrepreneurship.
DON'T: Post about prohibited topics such as recruiting, cofounder wanted, check out my product
or feedback on the FD site (you can send this to us directly info@founderdating.com).
See the Community Code of Conduct for more details.

Title

Give your question or discussion topic a great title, make it catchy and succinct.

Details

Make sure what you're about to say is specific and relevant - you'll get better responses.

Topics

Tag your discussion so you get more relevant responses.

Question goes here

1,300 Followers

  • Name
    Details
  • Name
    Details
  • Name
    Details
  • Name
    Details
  • Name
    Details
  • Name
    Details
  • Name
    Details
  • Name
    Details
Know someone who should answer this question? Enter their email below
Stay current and follow these discussion topics?