by gt5050 on 11/4/17, 4:15 PM with 51 comments
We are in the process of building a reporting tool that would be mostly used by sales / marketing executives to monitor ROI.
This is not a consumer facing product rather a B2B product.
We are unable to decide whether to internationalize/localize the application or not.
Here are the two approaches we are thinking
1) Launch English only for now, but plan for localization in the future
Pros:
Make the product accessible for a larger market
Cons:
Long term maintainence cost (translation would be needed for every new screen-string pair)
Seems a bit like premature optimization
2) Dont internationalize at all, given that this is not a consumer facing product
Pros: Simplify development and maintainence over long term, not having to deal with I18N
Cons: Loose out on new audience who would like to use the software in their own language
What approach would you recommend?
Also HNers whose first language is not English,
1) Roughly what percentage of software you use has option available for your language
2) Do you prefer to use software in your language if there is an option available
3) Does not having your language impact productivity while using the software.
Thanks!
by methodover on 11/4/17, 7:09 PM
A couple years back sales convinced the CEO to internationalize for a European expansion... Starting with Turkish of all things.
It was a terrible waste of resources. We were still trying to find product market fit, and internationalization is a tricky, labor intensive problem. It's not just a matter of putting in hooks for internationalized strings in your code -- that's the easy part. It's setting up a great localization process that's the hard part. And even if you do a great job at building out that pipeline, it's a massive drag on the speed of developing new features. Every change needs to go through localization.
Don't do i18n until you have found product market fit, IMO.
by throwaway2016a on 11/4/17, 5:52 PM
But with that said, doing it up front even if it is less work than doing it later, is still way more work than not doing it at all. And if your app is in English your TAM is likely huge and you won't need to expand international for quite some time.
It's more than just localizing your app. You also need to do the same with your sales, support, and billing.
What do you do when you get a customer support request in a language your app supports but no one on your service team speaks? How do you get the customers in the other languages?
Also, what differences in laws regarding data protection / privacy / terms of service are you getting yourself into?
If you're charging a fee, do you need a bank account in the foreign country to charge the fee in local currency? If you do, what laws and regulations are you required to follow to get that bank account? What about tax? The US doesn't charge tax on services but many places do.
by jacalata on 11/4/17, 5:21 PM
by toast0 on 11/4/17, 6:05 PM
I think the bare minimum would be gettext style string marking, which is generally gettext("english string") in the source; other string marking techniques may provide a better localization, but this one is easier. Also, try to follow general guidelines for creating strings so they're likely to be localizable. Gettext's guidelines[1] are decent. You don't actually need to use gettext -- you can make a 1 line function or macro that just passes through the english text as is for now. Even if you don't mark strings, at least thinking about string guidelines will help for the future.
If you ever decide to come localize in the future, at least you won't have to markup all the strings, and hopefully you won't have done a lot of "string math" which is painful to unwind. You'll still have a big amount of work to test and fix any strings that were missed, but you'll be a lot farther ahead.
[1] https://www.gnu.org/software/gettext/manual/html_node/Prepar...
by raverbashing on 11/4/17, 5:34 PM
Now, what you should absolutely DO is make sure your system doesn't break with foreign names/data/locales
Locales to test: RTL locales (Arabic and Hebrew for the most part) and maybe Turkish (the infamous dotted capital I)
Names: Chinese, Japanese, Russian, Latin Extended (ñ, œ, ø, á, é, etc), even names in English can break stuff (O'Brian)
Dates: does it work with DD/MM/YY or YYYY-MM-DD and keeps consistent?
by alexbecker on 11/4/17, 5:40 PM
That being said you need to actively pursue international sales for this to work, and i18n software is only a part of this. If you aren't making the effort on the sales side it probably isn't worth it on the engineering side.
by icc97 on 11/4/17, 5:58 PM
The app I built had no need for languages for the first 3-4 years. Then suddenly a foreign client comes in (ours is translated into Spanish, Portuguese, Russian and Chinese) and you've got a ton of code written.
by GuiA on 11/4/17, 5:32 PM
If not, then do not worry about internationalization at all, and do just English. Validate your MVP first. At this stage, you’re trying to find people who have a pressing, immediate problem to solve - and even if some of them are not native English speakers, it shouldn’t be too much of a deterrent because your product will still be a godsend to them.
If you have already validated your product, or when you have done so, but it is not immediately clear what languages besides English you should pursue, then I would recommend still picking a second language to make sure that your codebase has basic, initial support for multiple languages. If you are not in a primarily anglophone country, or members of your founding team are native in another language, then pick that one (it’d be dangerous to pick a language you have no familiarity with, as a team, because high quality translators are hard to find, and translators who can work with your designers to address more subtle cultural details are close to impossible to find).
This won’t solve all your problems - for instance if you support English and Spanish out of the box, but a few years later you realize you need to support Hebrew, you’ll likely have work to do to support a right to left script. But at least your codebase will have initial support for more than one language, which will make the effort a little less insane.
by tqkxzugoaupvwqr on 11/4/17, 6:53 PM
The most basic version of how it works: Where you want your translated text, put a function, e.g. called “T” that takes a string as argument and returns a string. The function uses this argument (translation ID) to look up the actual translation in a map.
by pawel_dyda on 11/4/17, 7:23 PM
First and foremost i18n is not about extracting strings to make application translatable. Before you actually do that you should think what actual markets you will be targeting. Actually, even by your rough description of what your application will do, I can tell you that the major will be cultural fit. You may think that people tend to do business roughly the same way all other the world. And nothing could be farther from the truth.
Should you ever want to sell it outside US, you should think how to suite your target users' needs. And this is much more related to behaviors / workflows than to translation.
By the way, I don't care that much if something is translated, what I care most is how things like date, time and currency is presented. This is crucial; I can't comprehend dates like 4/11 quickly.
To answer your specific questions.
1) Frankly, I have no idea about percentage. Personally I tend to use English versions if that's possible as Polish translations tend to be horrible. Well, it is usually result of concatenating strings which does not allow for re-ordering the sentence, but still.
2) I already answered to some extent. I actually prefer everything to be in one language (be it my native Polish or English). Having part of UI in English and part translated is really irritating. And as I said, following local formats is much important.
3) This depends on your user base. In case of Poland, I believe financial / marketing people will use so many English terms that untranslated app would be easier to grasp. Should you follow local formats (or allow to change them in user preferences), that is.
by r-s on 11/4/17, 5:03 PM
I do not however localize them until its needed. Often working with translators and ensuring the quality of the localized application is not a huge priority in the beginning.
by ufmace on 11/4/17, 10:44 PM
More fully, what's your customer acquisition pipeline like? How many people on your team are fluent in another language? If the answers are "we don't know yet" and "none, except I think one guy speaks a little X", then I18N is the last thing you should be thinking about. You have access to a plenty big market just working in English, figure out how you're going to get customers and what they want first. Establish yourself as a viable business. Get as many customers as you can with your English-only app.
Once you know how to get English-speaking customers and what they want, you can at least make a reasonable estimate on what will be required to get international customers. You should already have some English-speaking customers in any country worth targeting for a more directed sales effort. That'll at least give you a starting point for people to talk to to figure out how to service those customers better and what you might need to change to operate more effectively in that country. This may include actual good translations, units and date handling, any cultural differences, legal and tax compliance, accepting foreign currency for payments and how to handle that, etc.
by 51Cards on 11/4/17, 6:40 PM
by rmetzler on 11/4/17, 6:41 PM
Often the translation is done poorly, E.G. the word "open" has two different meanings when translated to German, depending on if it's used as a verb or adverb.
I especially used to hate the translation for git, because I couldn't understand it, since they even translated all the core concepts like "branch" into "Ast". It seems like it's better now, but there are still errors which are not translated, so the screentext is mixed German and English.
In the software I maintain I hate translations, because all the time project managers forget that I need the texts in two languages. Also there's never the perfect time to do the texts, since you almost always have to change the UI and all translations.
One tip: if you use dates, please use YYYY-MM-DD and not MM/DD/YYYY. The first format is universally understood, the second one almost always trips me up since we use DD.MM.YYYY in Germany.
by TheAceOfHearts on 11/4/17, 8:25 PM
Also, isn't CSS support for RTL languages kinda iffy? I've noticed that in newer versions of the spec they've begun using start/end rather than left/right, which I'm guessing is meant to help when creating bidirectional interfaces. But how well supported are these changes?
My first language is Spanish. No idea what percentage of my software supports it since I never check. I always prefer using English. Not having a Spanish option has zero impact on me.
I'd be interested in hearing arguments from the pro-i18n/l10n side. I actually have lots of questions about why certain things should be supported at all. For example, why should we support +10 different calendars instead of making everyone use ISO 8601?
by lj3 on 11/4/17, 6:33 PM
If you have enough customers to warrant an international version of an app, it might be worth it to completely redesign the UI around the new audience. The language used applies constraints and makes assumptions that may not be true in other languages. And then there are the culture differences...
by codewardenh on 11/4/17, 5:26 PM
by apeacox on 11/4/17, 6:10 PM
Instead, Elixir/Phoenix uses gettext, you wrap strings with a gettext call, then you run a task and it generates all the files ready for translation. This means I can still use a main language and translate it if needed, without touching the codebase.
by waibelp on 11/4/17, 6:23 PM
<button>Sign Up</button>
I simply write
<button>{{ 'Sign Up'|trans }}</button>
That way I don't need translation files (EN is default). If translation is not found the "key" is returned which is fine. Once the app is ready I call a command to create my language files and simply translate them.
by askafriend on 11/4/17, 4:26 PM
You’re missing some useful data that would make this decision easier.
by ryandrake on 11/4/17, 5:40 PM
by ggg9990 on 11/4/17, 6:54 PM
by andy_ppp on 11/4/17, 6:03 PM
by davchana on 11/4/17, 5:49 PM
by jmnicolas on 11/4/17, 6:52 PM
I think (but not 100% sure) that it will be the same in southern and eastern Europe.
Northern Europe should be different, they're usually better at learning English.
by herbst on 11/4/17, 7:26 PM
by antaviana on 11/4/17, 5:28 PM
by drwu on 11/5/17, 10:24 AM
For instance, in the scientific or some high-tech branches even for some IT topics, there are sometimes no official translations of the new ideologies.
by hayksaakian on 11/4/17, 7:25 PM
do you have a large customer who can fund the internationalization?
is there someone who would most certainly become your customer if you internationalized?
otherwise it's a very hopeful use of your valuable engineering resources.
by je42 on 11/5/17, 12:11 PM
by jjuhl on 11/4/17, 7:52 PM