00:00:00 ◼ ► Hello and welcome to Developing Perspective. Developing Perspective is a podcast discussing
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: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: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: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: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: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: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: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: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:56 ◼ ► And in a lot of ways, Pedometer++ was an app that could get away with it a little bit because
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:43 ◼ ► So if a lot of, like for example, Podometer++ has the majority of its sales in English speaking
00:03:48 ◼ ► And obviously there's a slight bend to that, that I believe the US market is probably the
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:14 ◼ ► And then the last really upside is that Apple always talks about how much they love it when
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: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:53 ◼ ► knows what that amount is, but that's a non-zero amount, so take it for what it's worth.
00:05:03 ◼ ► trickiest one, honestly, for me is that you're dealing with a lot of content and things that
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: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: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: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:51 ◼ ► adapt your layout to different languages. The most notable and famous example is German,
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: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:41 ◼ ► Sometimes there are certain types of applications that really don't need to be localized, or
00:07:50 ◼ ► If your app only uses symbolic icons and is very content-centric and those types of things,
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:17 ◼ ► So those are kind of the pluses and minuses. Those are the kind of the pros and cons for
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: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: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:32 ◼ ► new languages and hopefully it will be coming out sometime next week. So how do I do that?
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:12 ◼ ► get those files translated. So you're just kind of turning everywhere you have a display
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: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: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:31 ◼ ► and I need to choose Korean. But I don't speak Korean, and the way that Korean is shown on
00:11:42 ◼ ► read. So I've had to kind of learn what Korean looks like in Korean, or Chinese and Chinese
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: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: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: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: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:27 ◼ ► And so that's kind of localization. I know that's a whirlwind tour of, you know, me talking
00:13:38 ◼ ► from end to end in one show in the hopes of kind of whetting your appetite about exactly
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: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: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