Developing Perspective

#171: Pros and Cons of Localization.


00:00:00   Hello and welcome to Developing Perspective. Developing Perspective is a podcast discussing

00:00:03   using the note in iOS development, Apple and the like. I'm your host, David Smith. I'm

00:00:08   an independent iOS developer based in Herner, Virginia. This is show number 171 and today

00:00:13   is Wednesday, January 22nd. Developing Perspective is never longer than 15 minutes, so let's

00:00:17   get started.

00:00:18   All right, so I'm just going to dive into the topic today and that is going to be talking

00:00:21   about localization and about localizing your applications and the systemic from experience

00:00:26   I recently had, where I've gone through and localized a pedometer plus plus into about

00:00:32   eight different languages or so in addition to English, which obviously it was in its

00:00:36   first version. So when I say localization, it's probably good to clarify what I'm talking

00:00:39   about. There's a variety of things that could apply for. There's a difference between localization

00:00:44   and internationalization, and that can get into a lot of the subtle differences between,

00:00:50   for example, the way dates are displayed in Britain versus the United States, which is

00:00:56   a different kind of internationalization that I'm talking about here. Primarily what I'm

00:01:00   going to focus on today is talking about the language part of this, of taking your application

00:01:05   and its resources and the text and the strings that you display inside of it and making those

00:01:09   relevant in a variety of different countries, essentially translating the app into whatever

00:01:13   countries you want to use. Why would you do this? Why would you localize your app? It's

00:01:19   a lot of work and it has some challenges. So I thought it would be kind of interesting

00:01:21   to start off from talking on kind of what's the theoretical upside and what's sort of

00:01:25   the practical downsides that you get when you localize your application.

00:01:29   Perhaps the most obvious upside to localizing your application is that you increase your

00:01:34   reach. You are now more relevant in more places. If you had an application that was only in

00:01:39   English, while a lot of people speak English from a lot of places around the world, obviously

00:01:44   the majority of people in the world don't speak English. As prominent and prevalent

00:01:50   as English is as a spoken language. And obviously, I'm gearing this on an English speaking podcast.

00:01:57   I would mention a lot of you, everyone listening to this probably speaks English. But you can

00:02:02   dramatically increase your reach in terms of theoretical number of customers, number

00:02:05   of users by making your app relevant in their language. And beyond that, you're also just

00:02:09   improving those users' experience. Because if your app isn't localized, if your app isn't

00:02:15   in a language that is native to that person, it's not necessarily that they meant them

00:02:19   because they can't use it. I imagine for a lot of applications, especially content-oriented

00:02:23   applications, you could use the application fairly well without knowing the language that

00:02:28   it was natively written in. So for example, if you built a camera app, a lot of camera

00:02:33   apps you could probably use fairly well and with a lot of skill even if it wasn't localized

00:02:39   into your native language. There's probably only a few labels here and there without text

00:02:43   in them. Most things are just iconic and you'd be fine. But generally speaking, you want

00:02:47   improve your user experience by making them feel that the app was designed for them and

00:02:52   they're not just trying to find their way through the app.

00:02:56   And in a lot of ways, Pedometer++ was an app that could get away with it a little bit because

00:03:01   it was so much based on data.

00:03:03   And so in some ways I didn't need to localize it right away because it's a lot of numbers

00:03:08   and the numbers are fairly universal in terms of people use the Arabic number system pretty

00:03:13   much everywhere in the world.

00:03:15   So I'm not too worried about people not being able to know

00:03:17   what their step counts are.

00:03:18   But at the same time, people wouldn't necessarily

00:03:20   find it in the store.

00:03:21   They wouldn't-- when they go to the settings screen

00:03:23   and have to explain a few things, they might not understand.

00:03:25   And so I'm improving the user's experience

00:03:27   by localizing it into a language that's native for them.

00:03:30   In theory, you could also be making a bit more money,

00:03:32   more sales.

00:03:33   Any time you do something like this,

00:03:34   what you're hoping is going to happen

00:03:35   is that in addition to increasing your reach,

00:03:37   you're also going to increase your sales.

00:03:38   You're also going to hope that in more countries,

00:03:40   you're going to get sales that you didn't otherwise.

00:03:43   So if a lot of, like for example, Podometer++ has the majority of its sales in English speaking

00:03:47   countries right now.

00:03:48   And obviously there's a slight bend to that, that I believe the US market is probably the

00:03:51   largest in terms of downloads.

00:03:55   Just the nature of the, you know, Apple being a US company.

00:03:58   And there's all these types of things that go into that.

00:03:59   And it's a fairly wealthy and affluent country and so on.

00:04:02   But generally speaking, you know, English does pretty well as a baseline, but you know,

00:04:06   there's all these other markets, all these other countries, all these other places that

00:04:09   I'm not really addressing.

00:04:11   And so hopefully I could make more money, more sales, more downloads in those areas.

00:04:14   And then the last really upside is that Apple always talks about how much they love it when

00:04:19   you localize their applications.

00:04:21   And it's a bit tricky to sort of actually quantify how valuable it is.

00:04:24   But it's one of these things that you'll often hear.

00:04:26   If you watched that video I referenced a couple weeks ago from the tech talks where they were

00:04:30   talking about marketing your application, there's a couple of times that the Apple reps

00:04:33   site, you know, it's like we're more likely to feature an application if it's localized.

00:04:36   We're more likely to, you know, give it some love if it's this and that.

00:04:40   And it's one of those things you can't really quantify or count on, localizing your application,

00:04:44   getting Apple's attention. But it's one thing that you can kind of, you know, it's something

00:04:47   that you can do tangibly that will likely increase the odds by some amount. And who

00:04:53   knows what that amount is, but that's a non-zero amount, so take it for what it's worth.

00:04:58   So those are some of the upsides. I'm sort of, what are some of the downsides? On the

00:05:03   trickiest one, honestly, for me is that you're dealing with a lot of content and things that

00:05:08   you don't necessarily know yourself. So I'm translating an app into, say, for example,

00:05:13   Korean or Japanese, Chinese, these types of, you know, with completely different alphabets

00:05:18   than what I'm used to. When I get back from a translator, I'd have no idea about it really.

00:05:23   You know, I can't really, I can't just eyeball a screen and be like, that looks correct in

00:05:28   a way that I can for, you know, something that's English or to some degree with, you

00:05:31   know, sort of a language like French or German or Spanish, at least, where I kind of can

00:05:36   vaguely work out what's going on. You know, I look at an application and maybe I'm actually,

00:05:40   you know, transposing things where they shouldn't be transposed or putting the number in the

00:05:43   wrong side of the word or, you know, these types of things that are kind of tricky. And

00:05:47   so that's a downside for me that it's hard to ensure quality in my application when I'm,

00:05:52   you know, once it's outside of a language that I feel comfortable with. It's also a

00:05:56   little bit tricky in terms of support that if, you know, I put an app in the store that

00:05:59   has--that's, you know, in German and someone is using it in German and they email me, they're

00:06:05   they're likely going to expect in some ways that they can email me in German and I would

00:06:08   still be able to provide help for them. This has happened to me a few times and it's not

00:06:12   as bad as you'd think. Usually what you can do is you take their email, you put it in

00:06:15   Google Translate, you sort of vaguely work out what they're asking, you write a response,

00:06:21   you put it in Google Translate, translate it back. And then actually what I would recommend

00:06:25   doing is you send them the Google Translated version as well as your English version in

00:06:29   case they also speak English. But you can work it out. It's not great, but you can certainly

00:06:35   certainly work out support in that way. They certainly don't think you need to feel like

00:06:38   if you translate an app into a country that you're going to have to maintain perfect support

00:06:42   in that language as well. But it's something to think about. There's a lot of extra time

00:06:46   in terms of cost, time, money, effort. You have to manage a lot of files. You have to

00:06:51   adapt your layout to different languages. The most notable and famous example is German,

00:06:56   which tends to have these very long verbose type of words where other languages would

00:07:01   have often things that are very concise. But it can also go the other way. If you're trying

00:07:06   to make a layout that looks good in English, for example, it might not actually look good

00:07:10   in some of the more symbolic languages necessarily, where rather than having a string of eight

00:07:15   to ten characters, maybe they replace that with one character. And so things can look

00:07:19   kind of lopsided or odd. So something you have to keep in mind is you have to build

00:07:23   your app and structure it in a way that's much more adaptive and flexible. An auto layout

00:07:28   can help with that to some degree, but it's just something that you have to think about.

00:07:34   That's going to take you time, effort, and money, so be thoughtful about that.

00:07:37   It isn't always needed, is probably a fair thing to say.

00:07:41   Sometimes there are certain types of applications that really don't need to be localized, or

00:07:44   there are things that you can do to your app to make it less in need of localization.

00:07:50   If your app only uses symbolic icons and is very content-centric and those types of things,

00:07:56   you may not actually need to.

00:07:57   You could imagine, for example, a to-do list application that had no language-specific

00:08:02   content in it whatsoever. It's just a list that you're adding to and then maybe have

00:08:06   a plus button in the top corner, but that's about it. So you don't always need to do it,

00:08:11   and so you're always going to be thoughtful about if it actually makes sense.

00:08:17   So those are kind of the pluses and minuses. Those are the kind of the pros and cons for

00:08:19   which you have to weigh. And so why did I do it for pedometer++? Why did I think that

00:08:23   this would be a good idea to do it. Honestly, the main reason is because I'm curious. Last

00:08:30   time I localized anything was Check the Weather, and broadly I'd say Check the Weather's localization

00:08:35   didn't really pan out for me. It maybe helped a little bit, but broadly my sales overall

00:08:41   have all still been in English-speaking language in countries. The way the press and the support

00:08:45   that I got for it was largely in English-speaking areas, so broadly speaking it only sort of

00:08:50   have paid out. But I'm curious with Podometer because it's a new app. It's two years later.

00:08:55   It's something that I don't have a lot of data on recently. And I don't think there's

00:09:01   a lot of good examples of apps that have been doing this and then sharing their results

00:09:04   publicly. So I was curious about it. And I think Podometer is a good case for this because

00:09:08   it's free. So it doesn't quite deal with all of the usual kind of deal questions about

00:09:13   if different countries or different stores have different biases towards paid and free

00:09:17   apps, it has fairly broad appeal, and it has pretty consistent sales at this point. And

00:09:22   so I can actually compare it to something else. And so I thought it would be worthwhile

00:09:25   and sort of an instructive lesson to talk about. And so that's why I did it. And, you

00:09:30   know, so I've gone through the process and I've resubmitted it to the store with these

00:09:32   new languages and hopefully it will be coming out sometime next week. So how do I do that?

00:09:37   Sort of what is that process for taking an app and making it localized? You know, the

00:09:45   The simple answer in some ways is that it's fairly straightforward. Apple does a lot of

00:09:49   good work in Xcode to make localizing an application fairly straightforward. And like I said earlier,

00:09:54   I'll have a link to the show notes of a W2DC video that kind of walks through exactly how

00:09:58   you do this. But the process is fairly straightforward. At its core, you're just replacing places

00:10:02   where you have a string literal in your application, replacing it with a call to an S localized

00:10:07   string, the key and a description that you then externalize into another file and you

00:10:12   get those files translated. So you're just kind of turning everywhere you have a display

00:10:15   string in your application into a sort of a lookup at runtime so that it can adapt to

00:10:21   the current language for that user. And that works pretty well. So you're going to go through

00:10:25   and you'll end up localizing your application. You'll put it into all these different languages.

00:10:29   In my case, I have nine languages now. And so it goes through and you replace all these

00:10:34   strings everywhere. And then you kind of have to test it. You have to work your way through

00:10:38   it and you have to make sure that the app still works once you've made all these changes.

00:10:42   The actual process of getting those translations is up to you. I use a service called Tetris

00:10:48   that is a paper-word kind of translation service, and there's dozens of these. Apple has a link

00:10:57   on their internationalization pages to, I think, probably a dozen of these services

00:11:01   that you give them a strings file and they give it back. It's all kind of designed for

00:11:04   for apps anyway, so it's kind of convenient. But then you have to go through and test it.

00:11:07   And the testing is a little tricky and I have two little hints and tricks here that I wanted

00:11:12   to mention. One, I recently just posted a link on my website to a picture I worked out

00:11:18   that takes the English names of all the languages and puts it next to the way it's displayed

00:11:23   on the app. This is a problem that I've run into many times where I'm trying to, for example,

00:11:27   change the app into Korean. So I need to go to the Settings app, I need to look it up,

00:11:31   and I need to choose Korean. But I don't speak Korean, and the way that Korean is shown on

00:11:36   the phone is with a set of characters that are not something that I could ordinarily

00:11:42   read. So I've had to kind of learn what Korean looks like in Korean, or Chinese and Chinese

00:11:47   and Japanese and Japanese, or Russian and Russian, these ones that are kind of tricky

00:11:50   to learn out. And so I made a little cheat sheet that I have a link in the show notes

00:11:54   to about how to do that. And another tip along that is to make sure that you know how to

00:11:58   to find the settings, this part of the settings app that deals with language and without reading.

00:12:03   So you have to know that you go to general, you flip to the bottom and it's like the bottom

00:12:09   element of the second to last group I think and you hit the top one of those because once

00:12:13   you've changed the language of the phone to something else, you won't be able to read

00:12:18   it necessarily. And this is something that I remember caught me the first time I did

00:12:21   localization work that I flipped the phone into Japanese and then it took me a while

00:12:25   to actually find the ability to change it back to English. And so that was kind of just

00:12:31   a lesson learned the hard way that I wanted to mention. Another little pro tip that I've

00:12:36   been--I'll probably expand on later, but I just wanted to mention briefly here is this

00:12:40   was the first time I've ever used the iTunes Connect transporter application, which is

00:12:44   something that Apple provides for doing batch submission of metadata and artwork, which

00:12:49   is amazing for localization. It's a pretty complicated tool and I'll probably talk about

00:12:54   it in a later episode and expand on it in a blog post. But basically what it lets you

00:12:58   do is take your iTunes Connect metadata, bundle it into this big sort of package, and then

00:13:05   submit it all at once. So you're not sitting there in iTunes Connect uploading all 50 screenshots

00:13:10   that you now have to generate one by one, which would take forever and drive you crazy.

00:13:14   And it also gives you the added benefit of being able to version your iTunes Connect

00:13:18   metadata, which I think is amazing. So like I said, I'll expand on that later. But definitely

00:13:22   you want to check out. If you just go to iTunes Connect, manage your apps, there's a bunch

00:13:25   of documentation for it at the bottom of that screen.

00:13:27   And so that's kind of localization. I know that's a whirlwind tour of, you know, me talking

00:13:33   quickly as I kind of give you the firehose version. But I wanted to try and cover it

00:13:38   from end to end in one show in the hopes of kind of whetting your appetite about exactly

00:13:42   kind of the things you have to think about and also just to understand, you know, is

00:13:45   this for me?

00:13:47   At its core, I think this question I've gotten a couple of times from people is like, "Should

00:13:51   localize my app? And the only kind of obvious answer to that is really it's A, does your

00:13:57   application have broad language appeal? You know, if it's an application whose purpose

00:14:02   is to do something in a particular language or is relevant only in that context, don't.

00:14:07   If it's something that--if your app is not in English and you'd like it to have a broader

00:14:11   audience, I'd probably recommend localizing it in English as well as your native language.

00:14:15   But generally, I think it's up to you. There is no great answer to that. I think for a

00:14:19   a lot of applications, their version one doesn't really necessarily need to be localized because

00:14:25   you may be putting a lot of effort and time into something that you won't actually come

00:14:28   back with. But in this case, I think it makes sense for me to do it now, sort of going back

00:14:34   into version two of the application. And I think that often is what ends up happening.

00:14:37   Anyway, that's it for today's show. I know it's a bit of a whirlwind and I apologize

00:14:41   for that. But always, if you have questions, comments, concerns, complaints, on Twitter

00:14:44   at underscore David Smith, David at developing perspective dot com.

00:14:47   Hope you have a great week.

00:14:49   Happy coding.