General • 1:08:47
Every version of Mac OS X ships in multiple languages, creating immediate global delivery of exciting new features and functionality. This session explains how developers can use the very same localization technologies and tools to quickly and efficiently deliver their products to lucrative international markets.
Unlisted on Apple Developer site
Transcript
This transcript was generated using Whisper, it has known transcription errors. We are working on an improved version.
Welcome to session 010, Going International with Mac OS X. What you saw is actually the first thing that our mutual customers will see when they buy Mac OS X and the first time they run Mac OS X. The idea behind this is that you have this message of being welcomed in different languages. The idea is to show that Mac OS X is truly a worldwide operating system.
But in order to be a real operating system that's going to be shipping all around the countries, in order to be truly international, the operating system is nothing if we don't have the applications. And that's what I'm going to be trying to convince you guys to do, is to try to look at markets that maybe are not present right now.
So today I'll be talking about why, as a developer, you need to go international if you're not already. And if you are, maybe you're forgetting about some markets that you should address. We'll talk quickly about some ideas for retail solutions. Most of the time we get a lot of questions from mid-sized developers, mid-sized companies that develop on the platform, on the Macintosh, and said, you know, I'd like to go in France and sell my application there, but how do I do? I mean, what's the support? How do I get in the channels? So I'll try to touch a little bit on that, and I'll try to give you an update on what developer relations has been doing in this regard. Then in the second part of the presentation, I'll talk about the international technologies present in Mac OS X. There is, of course, as you know by now, a huge difference between the support we had in Mac OS 9 and Mac OS X by itself.
I'll try to remind you of a couple of the... features that make Mac OS X truly an operating system, an international operating system. And I'll give you as well an update on Jaguar and what we've been doing with Jaguar. And quickly, I'll touch on localization, and I'll try to give you some ideas on maybe things to help you localize your application or third parties to help you localize applications.
So first, why Apple goes international? Well, the reason is pretty simple. International markets are opportunities. And when we say opportunities, it's in fact dollars. And you as a developer, it's very important as well to understand that if you're shipping only in Europe right now, you need to look at the US market. If you're shipping only-- if you're a US developer and you're shipping only in the US, you need to look at the Japanese market and the European markets. These are very important. And in fact, I shouldn't say dollars, but I should say euros and yens, of course.
I'd like to give you an idea of what were the revenue reparations between the US and the rest of the world. These numbers are the ones from the ACC filings that Apple filed in December 2001. You can see that the US market counted for 57%. This number is to put in perspective with the last two years, where the numbers were closer to 50%, in fact.
[Transcript missing]
By Asia Pacific, I mean actually the rest of the countries out of Japan. So that would be China, Korea, Australia.
To put these numbers in perspective, I'd like to show you the last growth numbers we had for the year 1999-2000. Europe grew 53%. That means in 1999, if you had your application shipping in Europe, well, you had to potentially, like, you know, almost double the revenues for your application. Things like the Americas grew only 24% in perspective, where Apple has been already implemented and has a large part of revenues already.
Japan, 39%. And Asia-Pacific region, 18%. So, of course, these numbers are from, like, you know, 1999 and 2000. We have to keep that in perspective. Once the economy picks up, we hope to see this kind of growth again in these markets. And for you as a developer, keep that in mind when you try to focus and you try to find where I should go.
So, you have the numbers in mind. Now, which kind of countries, what market should you address? Japan, obviously, is the largest Mac install base outside of the U.S. It's very, very important. Apple has been doing a lot of efforts, has been pushing very hard with Mac OS X on the Japanese market.
If you look around you, I mean, we've been the first platform to ship a high-quality font for rendering, display, and printing for the Japanese market. The Iragino font that ships with all versions of Mac OS X has 22,000 glyphs. This is something that is the most important thing for us. You're going to see more of it when you look at Adobe Japan's standard 1.4 support. Apple is a pioneer in this regard, and you're going to see more happening in Jaguar.
So once again, for you, if you're not addressing this market, you need to really look in details and find out how you're going to be able to approach that. The three first countries you should approach in Europe are England, France, and Germany. And of course, if you're a U.S. developer going to England, it shouldn't be too difficult from the language point of view. Just remember to translate the trash to... I think it's an overname.
France and Germany. Another thing to note is that if you translate your application, for instance, in Spanish, well, potentially you could address the Latin America's countries as well, where Apple is present as well. And then I would encourage you to look at other countries such as Italy, Netherlands, Sweden, Denmark, Sweden, where, if I'm not mistaken, actually the government subsidized the schools and where a lot of Macintosh are sold.
So now, it's very difficult sometimes if you're a U.S. developer or you're a French developer, for instance, and you want to market your application in the U.S. or vice versa, of course, in Europe. Here, Apple Developer Relations has been working on a couple of programs to really help you go international. And I'd like to go through a couple of slides that maybe, hopefully, will give you an idea of what we've been doing and maybe will give you an idea to help you go after these markets.
If you're not a U.S. developer and you would like to attack the U.S. market, ADC, Apple Developer Connection, has been putting a couple of programs together. The first one is with Navar Corporation. And the idea behind that is that Navar Corporation supplies retail stores such as CompUSA, Circuit City, Micro Center, Fry's, and you have, of course, the whole list there. And that's the way to get in the retail channel. We have some deals going on. I'd encourage you to go on our website, check out the information.
If you're not on this market and you're looking into it, send me an email, look at the web. We have a bunch of information, and let us know if this is helping you. Now if you want to sell your application, the easy way, I would say, would be to go through e-commerce. And for that, once again, ADC has a deal with Kaji. And Kaji really makes the e-commerce easy for ADC members.
If you want to attack Europe, the European market, a nice thing that has been starting, if I'm not mistaken, last year is the Top 50 program. And the idea behind this is to help developers put their application in one place and to have a bunch of channel partners, retailers, go in this place and look for applications that will make sense in their market segment. And here it's going to allow developers' products to be placed in a select retail store. And the idea for retailers is that they're going to go to one place and get a list of all the applications they could actually have in their channels for the Macintosh.
I think right now we have around 750 retail stores out there that are being supplied with the Top 50 program. And these countries, the countries that we are mainly implementing for the Top 50, are UK, Germany, and France, which are, as I mentioned before, our main market for Apple in Europe. So this is actually pretty cool, and we have at the bottom of the screen, hopefully you can see that, on developers.apple.com, marketing programs, the Top 50 that is explained.
I really, really encourage you, if you're interested in going after these markets, to look at the Top 50 program. And once again, should you have any questions on these topics that we're going to be talking today, you can always send me an email. I'd be more than happy to put you in relation with the correct people.
Japanese market. We don't have any easy deal for you actually to attack the Japanese market at this point, but Remember, if you're US or even a European developer, the Japanese market is the biggest market outside of the US. If you're not in there, you're potentially missing a lot of money. And we're really strongly pushing for the Japanese market and to make our implementation, the Macintosh desktop, even wider adoption.
The suggestion that we have for you is to go through a local partner to attack this market. And for that, WWDR, Developer Relations, can help you. And if you're interested in this market, I strongly encourage you to send me an email. Come at the end. We can talk. We have representatives from WWDR in Japan here.
And we can start putting some kind of organization together and start talking and doing some business. We wrote a document that explains the common pitfalls, I would say, or the common primes that foreigners have to access the Japanese market. And I encourage you to read the document that we have there in the Japan URL at the bottom of that screen.
So now, this first part was, I guess, what I would say the marketing spills. But this spills is very important for you to understand, because to make Mac OS X successful, we need you guys to port your application to all of these markets. And most of the time, with the technologies that work for you now, it's easier to attack these markets. So now, I'm going to give you a list of different technologies that you could use to make sure that your application is international ready.
First, we're going to start-- With a review of the Mac OS X architecture, since Mac OS X 10.0, Apple ships one single CD with support for 15 languages. Actually, I should say, since 10.1. On 10.0, we had an add-on. But since Mac OS X 10.1, 15 languages out of the box. That means a customer in Japan, in France, or in the U.S.
could actually switch the language and be in French if he's living in the U.S., could be in Japan, or any case, any of these 15 languages. And for you as a developer, it's important to understand that the customer could expect your application to support multiple localizations as well.
We have this concept of preferred languages, and I'll show you that in the demo. And this is kind of nice, actually, that actually even the Windows platform doesn't offer. You can have a specific language setup for your computer where you could say, you know what, my first language is French, but if I launch an application that doesn't have French, I'd like to have it in English. And then if English is not present, well, I'd like to have it in Japanese.
And the nice thing is that, and I'll show you that in the demo, is you could have a finder in French, but then launch an application that's going to be launched in Japanese. So out of the box, we have support for CGK script, okay, simplified traditional Chinese, Japanese, and Korean, and of course, all the European languages. And I'll go in more detail about what that means for you as a developer.
We have this concept, of course, of supporting multiple locales in the base OS. So you could ship French, Canadian French, Belgium French, if you wish. The one that comes to mind, of course, is like US English and British English. And once again, all the scripts that I just defined are supported out of the box. Remember on Mac OS 9, you had to install the language kit, and then you had to make sure they had the right font.
But then if your finder was in English, you'd have some trouble because of the file system. And you could never type a file name in the finder that would have French and English. Because remember, the E with the accent is the first byte of a two byte character. Anyway, we resolved all this problem with one very solution, one very easy solution, which is actually a standard. It's Unicode.
The whole operating system manages Unicode. Even in your application, when you pass a string that is not Unicode to the menu manager, well, actually the system is going to translate it to Unicode. Because all the drawing in the finder and the system is done through Unicode. So at one point or another, if your application is not giving to the system strings in Unicode, we'll translate it for you. And that concept of fully-uniqued support is very, very important. Because even if you're only a US developer and you're limited in the US English market, remember that customers now are going to be able to switch and will expect you to support Japanese, for instance.
Let's look at the current version of Mac OS X. So we have 15 languages-- French, Japanese, German, English, Italian, Spanish, Dutch, Traditional Chinese, simplified Chinese, Korean, and I guess I'm forgetting Norwegian, Swedish, and I think that should be 15 by now. We ship as well all the local associated with these languages, such as French, Canadian, British, English, and if you go to the international panel, you know, in the preferences, and you go to international panel here, I just said that, with the languages, you'll be able to install the keyboard and see all the scripts that are supported out of the box in Mac OS X. And of course, as I mentioned, Japanese, Chinese, and Korean scripts out of the box with the right fonts.
Now, Jaguar. Jaguar is a big step forward in the way, not in the way that we're going to support languages, but with the amount of new languages we're going to be able to support. A lot of developers last year have been complaining since Mac OS X shipped of the lack of support for tier 3 languages. And tier 3 languages are for us Arabic, Hebrew, Thai, Devanagari, and Cyrillic, Cyrillic script, Hungarian, and these things. Well, with Mac OS X Jaguar, we're actually going to be supporting this script. But, very, very important for you to understand, this script will be supported only through Unicode.
So what does that mean? That means that right now, if you're a quick draw application, you won't be able to type actually Arabic in your application. You won't be able to type Devanagari in your application. So that's very important for you to keep in mind. Make sure that your application supports Unicode. Make sure you use the MLT text engine. Make sure you use that suite of one of these Unicode technologies.
In Jaguar as well, we're working towards having a way better support for GB18030. As you probably know, since the beginning of this year, if you want to ship applications, machines, hardware in China, your application and the hardware needs to support the GB18030 encoding, which has been defined by the Chinese government. Mac OS X supports already GB18030 through the text encoding converter, and now we're going to be adding better support for input methods and, of course, phones.
You should see as well in Jaguar a way advanced Kotori. Kotori is our input method, and we hope Japanese customers will be pleased with the work we've been doing in this regard. Same thing for the traditional Chinese and simplified Chinese input methods. And we're working, of course, with our Korean counterparts to make our Korean input methods better, and you'll see actually soon some updates on our input method.
Let's look now at the list of the new languages that we'll be adding to Jaguar. Central European scripts such as Polish, Bulgarian, Hungarian, Croatian, Czech. The Cyrillic scripts such as Russian and Ukrainian. Modified Roman, Turkish, Icelandic, Greek, Romanian, and of course, support for complex scripts, Thai, Indic, Arabic, and Hebrew.
Remember that. It's very, very important because your customers will ask you. If your application is shipping right now, and when we ship Jaguar, they go in this switch and want to type some Arabic, and they cannot access to the keyboard, they're going to go back and they're going to ask you. And for that, you have to be prepared. These new languages are supported only through Unicode.
What are the advantages of using Unicode in Mac OS X? I'll go through a couple of these features. First, it's one character set for all languages. That means no more of this thing where you know you're going to copy and paste and you're going to get some boxes on your screen because we don't know what's been coding because the style information was not with the text. Here with Unicode, we have an easy way. We know where, what character is mapped to what language. Okay? So, one character set for all languages. And this is great.
It gives you, for existing languages, more characters. I don't know if you noticed, but for Apple, for instance, to ship for like the European languages on Mac OS 9, we had to ship, if I'm not mistaken, five different fonts and three different languages and encodings just to support a couple of extended character sets. We don't have to do that anymore. One font, Unicode, and the system is going to be able to display, actually, the whole extended character set for Roman.
The Unicode support gives us as well built-in features for the future. That means if in the future we want to support new languages, or if you as a developer in the future want to support other languages that Apple doesn't support, you're going to be able to do so because of the Unicode support we have there. It simplifies, of course, the Gabel text program, as I mentioned, for Japanese, when you copy and paste and you don't have the right font on your system.
And, very important, it's cross-platform. A Unicode text file, you put it and you can sell it on Windows, it's Unicode as a standard on the exchange for mail and on the Internet. We're using a standard to display our languages. We're using a standard to display text on the Mac.
Quickly, I'll go through the Unicode coverage that we have right now on the alphabetic side, I should say. Lucida Grande is the default font, is the system font for Mac OS X. And Lucida Grande has actually support for the extended Roman character set, Cyrillic, Vietnamese, and Greek. The fact of the matter is, if you are a quick-draw application, well, you're not going to be able to see the Greek, the Vietnamese, and the Cyrillic.
But I'm going to show you that in the demo, which is pretty obvious, you'll be able to see that we have been adding a lot, a lot of glyphs, a lot of characters in Lucida. And with one font, you can use that to display probably like all the texts that you have in Europe. Important to notice and to note that Times and Helvetica as well, phones that Apple has been shipping for a while now, have support for extending Roman character set as well if you are a Unicode application.
Now, of course, I have to talk about Japanese. Once again, Japan is one of the main markets, and we're trying to focus and make our install base larger in Japan. And for that, we thought that we needed a way better support for our fonts. We need a way better input method as well, and we're on our way to achieve this. But let me talk to you a little bit about our font support at this point. Hiragino fonts are actually a set of six DTP quality open type 1 fonts. So desktop publishing fonts, which are type 1 postscript, but packaged in an open type font format.
It's the industry-leading character coverage. Nobody else does that on the market. And even on Windows, you will not be able to find that. We have the full GIS X0213 support, very important for DTP. We support, of course, Adobe Japan 1 for character set. We have the Check-in 78 prototype setting, Kenji support. And we added as well the NLC shape recommendation. And you have a couple of examples here at the bottom of the screen.
Very cool stuff. Remember, in Japan right now, we still have customers that cannot display their name correctly because of the limitation of Mac OS X codings. So moving to Unicode enables us to access all these glyphs and character shapes that we couldn't have before. As I said in my introduction, the Japanese font, the Hiragino font, has support for over 20,000 glyphs. To put this in perspective, Osaka had only 7,000. And of course, the gadget prime is greatly reduced because of our Unicode support and all these gifts we've been adding.
Now, how did we achieve to ship one CD across 15 languages? Across 15 languages. Well, with Mac OS X, we introduced, if you remember, a new delivery mechanism, which we call bundling, application bundles. And I'll go in detail about what that means and how you as a developer can take advantage of this mechanism.
Another feature that I think you're going to appreciate in Jaguar is the localized view of the file system. See, the problem there is, that's great. We were shipping, you know, languages, CDs in 15 languages. The only problem is that our application names were still in English. The problem is that folders such as pictures, movies, well, were still in English. Because, you know, we will not localize the whole file system.
On Mac OS 9, what happens is that we localize the file system. So, you know, the system folder inside, the fonts, police the character, all that will be localized. But on 10, this is a nightmare because we have so many different folders. And the work to achieve this is just too painful for compatibility reasons and maintenance.
The localized view of the file system actually suppresses this problem. And I think you're going to be pleased with the results. I'll talk as well about text technologies that will enable you to use Unicode in your application. Hopefully, it will give you a clear path of masterization. And migration if you're not using Unicode already in your application. And then the last point quickly I'll touch about some localization tools that Apple has been working on. And maybe will give you some ideas on how to maybe streamline your localization process.
First, bundling your application. The application bundling technology has, in fact, two goals. The first one is to support multiple languages, but the second one is to hide all the glue that before we had to show to the users. So in fact, what happens, a bundle-- what is a bundle? A bundle is, in fact, a structured directory.
But this directory is presented to the user as a single icon. And I'm sure you're all familiar with this concept by now. As a developer, how are you going to be able to identify this structure as a bundle? You're going to set the bundle bit, the package info file, which is inside the bundle, and you'll need to have an extension .app.
So now, let's look in more detail about what's inside a bundle. Hope you like my graphics because I spend a lot of time on them. An application bundle can have multiple binaries. How? That's important because remember the keynote, when I was talking about the support for Mac OS, the future? Well, the fact of the matter is you're shipping an application still on Mac OS 9. The nice thing with this support is that you're going to be able to ship a Mac OS binary and a Carbon CFM binary should you support still Mac OS 9.
The other advantage is going to support multiple localization. Inside this burden, you're going to be able to put your French, English, Japanese resources, and I'll go in details about how you can achieve that. And as I said, the binaries could be CFM or Mac OS. Remember, you don't have to be like all Mac OS at once. You can still continue supporting your Mac OS 9 system.
Can be launched on Mac OS 9, and I think you'll need to use CarbonLib 1.4, if I'm not mistaken, to have the full support for this. And the cool thing, too, is that it's not just for applications. If you're shipping libraries, plugins, well, you can build on them as well. You can present a single, elegant interface to your users.
So now I'm going to go through the hierarchy by itself. It's very, very important that actually you as a developer embrace this standard of application bundles because there are many, many advantages. The first that we see is the support for multiple localization, but the second one is that it really, really makes life easier for developers and our customers because they don't have to find out now, okay, so if I copy this application, I need to go into the file system, and I need to take the extension, and then there is a driver I need to pick up as well. Oh, and yes, there is the plugins on that side and the help file. I mean, if you want to copy an application to another hard drive, it's a nightmare.
With this, you can put all your libraries, all your help files, all your pictures, whatever you need for your application to run in one single directory. And so when the user is going to be in the finder and is going to copy, in fact, the bundle, he's copying a full directory. So he's going to be copying all the things that your application, needs to run. So no more cold support, you know, to your company saying, "Hey, I don't understand. I copied my application. It doesn't work anymore." Now, let's look inside the bundle.
Let's try to go step by step on the things you'll have to do in order to bundle your application. The first thing at the top is a folder called yourapplication.app. Here, in this case, I'm going to be using Sketch, which is a very simple application that does drawing.
Below this, the first folder you're going to find is called Contents. Note that the spelling of each word is very important. Inside this contents folder, we're going to have different things. Let me walk through actually these things. The first thing is the Info.plist. This is actually a CFDictionary. You have to look at the Info.plist as the heart of a bundle.
The Info.plist is where all the information about your application is stored. This is where you're going to put the version of your application. This is where you're going to put the name. This is where you're going to say if your application supports multiple localization and many different tags. The cool thing with that is that the InfoPetist is a basic CFDictionary, so it's an array of data, tags, and values.
The second part of that is a folder called Resources, and let's go into detail about what's inside Resources. The first that you see here is that I have sketch.rsrc. This is, in fact, consider that you had before, Mac OS X application, remember, you have a data fork and the resource fork. In fact, here, I have the resource fork of my application residing in here. But notice as well that I have an english.lproj. This is where I'm gonna put all the strings, all the resources that need to be localized.
And inside that, you'll find a couple of things. The first one is here, you have the localized resources. And an infopdist of strings. Note that in the infopdist of strings, I'll talk later, is where you're gonna put actually the localization name for your application, should you go that path. The important thing to understand here is that by bundling your application, you don't have to change your code.
On Mac OS 9, if you do a get one resource or get resource, the resource manager is going to go open the data fork and get the resource that you asked for. So let's say you wanted to get str pound 100 because inside you had the name of one of your customers or a button or whatever.
The cool thing with that is when you're going to be doing a get one resource, the system is going to say, okay, get one resource, so what's the preferred language? So the preferred language is English. So the system is going to go and it's going to work through the english.lproj and it's going to look in localized.rsrc to find if it sees str pound 100.
If it gets str pound 100, boom, it sends back to your application. Important to note that you don't have to change anything in your app to bundle it. Let's say that, in fact, this resource has not been localized. Well, then the system is clever enough to go and look in the sketch.rsrc, the other resource.
The third file there is the package info, and in fact, this file is a basic text file that contains the type and creator. I should say, yeah, what we understood as the file type and the file creator before on Mac OS 9. We did that, in fact, to identify the package, identify the package as a bundle, and second, to make things faster for the finder when he needed to find out the type and creator of your application.
And the last one is, of course, the folder where your binary is going to reside. Here, in this case, I support Mac OS, but note that Sketch could be actually the Carbon CFM version of it. It doesn't matter. You put here your Carbonized version or your Mac OS version of your application. It's up to you.
Now, what happens if I want to add a new language? Well, what you will do is actually add a new folder inside resources. And here in this case, of course, I want my application to understand French. So I'm going to add a folder called French.lproj. Oh my god, what's inside that project, that folder? Well, in fact, I have the same thing that I had for English, the localized resources and the infopilis.strings.
The cool thing, once again, is let's say I change my preferences to be French in my languages, and I want the finder now to be in French. I don't have to change my code. The getOneResource I was doing before is going to go inside the French.elproach and get me the localized resource. That's pretty cool, I think.
And here, of course, you could put traditional Chinese, and you could create as many folders as you want. I should mention that the file name convention for the folder supports actually one of the ISO standards, and I think I have that in my next slide. And the direction we are going is actually, instead of putting the full name, putting just the abbreviation. But if you look at the ISO standards, it's pretty well defined. And here is my full application.
I have all the things I need. Important to understand as well that in there, I could have actually something, a folder called plugin, and put, you know, the plugins that my application needs. It's important to understand as well that there, in my resources, I could put pictures, I could put movies. Let's say you want to localize movies for, like, you know, because the movie is going to be different in Japanese than in English.
Important to understand as well that with that structure, all the things that your application needs to run on Mac OS X are hidden to the user. So there are less chances of having the user going and, you know, removing a library that you need for your application to run, removing some resources that are important or help files. So there are many, many advantages in actually bundling, packaging your application.
Now, let's talk a little bit about the localized view of a file system. Once again, new feature that we're putting in Jaguar, something that, you know, our developers have been asking and our customers were asking as well, of course. The problem is that, great, you bundle your application, you support 15 languages, you're shipping one CD across the world. Damn, your application name is still in English. Well, that doesn't look very good, right? I mean, you're selling a great application, but you still have your folders and your application name in English. Well, not anymore. Take the transition.
The goals behind this new feature was actually to enable the localized view of a file system. And what we wanted is to be able to have different localization at the same time on the screen for users and our developers. And of course, the main idea was to enable developers' products to localize their product names.
So now let me show you how you're going to be able to achieve that in the upcoming version of Mac OS X. Okay, to bundle, to localize the file name of your application, and once again, remember, it has to be bundled, you have two things to do. The first thing, make sure that in your Info.plist, you have the key CFBundleName defined.
So here in my previous example, for instance, the key in my Info.plist would be CFBundleName equal sketch. Now we added a new tag in Launch Services, and the tag is "LS has localized display name." That is a Boolean that you need to set to true in your info.p list.
And after that, remember the hierarchy, where I have the English.lproj, French.lproj. Inside that folder, I have a file called infopdist.strings. What you will do is that in this infopdist.strings, you'll have to add actually one thing, and it's the localized name of a bundle. So you'll add the key, CFBundle name, and then you'll put the localized name. So for instance, in French, it would be le sketch. Don't follow my example. But, you know, that gives you a good idea. Hopefully you get the idea.
Now, what about folder names? Because maybe you're shipping an application, it's bundled, but maybe you have help files that you want actually the users to see, or maybe samples, you know, tutorials. Well, tutorials is great in English, but in French, actually in French it's the same. But in Japanese, it's going to be pretty difficult to understand.
So let me show you now how you're going to be able to do that for folders. Folders get localized. It's pretty straightforward. It looks complex on my screen, but believe me, it's pretty easy. The first thing is you're going to add an extension to your folder name. Oh my god, an extension.
So you're going to add .localized to, let's say, tutorial. So you're going to have a folder called tutorial.localized. And what you'll do in the finder is that you tell him to hide the extension. No big deal. At that point, you just type a couple of texts and click a checkbox.
The second step is inside this folder to create a .localized folder. You won't be able to do that in the Finder because, of course, this extension, this is not supported by the Finder. We don't want people, users, to enter this. So you have to go through a terminal, or you can do that programmatically if you wish.
This localized folder, .localized folder, will actually be hidden to the user, so you don't have to worry about the content. And inside this folder, you'll create actually different files and one for each language. Here in this case, I'll put en.strings. And inside this file, what you'll do is that you'll put folder name equal the French name. So if I had movies, that's a bad example. If I had pictures, I'd have photography. I'd put that in the file.
And then if I wanted to have, like, you know, the name translated correctly or displayed correctly, should I say, in Japanese, well, I'll add actually to my folder a j.strings, and inside I'll put the localization in j, et cetera, et cetera. If you want to find out what character code you should use actually for, let's say, traditional Chinese, well, you can check the ISO 639-1 for the list of the languages. Thank you. And hopefully we'll have a tech note by then when we ship Jaguar, where actually we'll have like a clear step approach for you guys to use this. All right, if I could switch now on the demo, please. We're doing all the timing.
I'm going to try to walk through some of the new features of Mac OS X. Nothing fancy here, but I think you'll be pleased with what we've been doing in Jaguar. I'll start by showing you the international control panel. I want to show you the keyboard menu. Actually, I can use this.
We've been adding many new keyboards, and I hope you'll be pleased with actually the work we've been doing. You can see actually we have Thai, Hawaiian, huge market Hawaiian for us. Just kidding. I mean, you can see the keyboard actually has been there since 10.0. Something I didn't mention actually in my slides, but it's very important, and if you went to the session 200 on Unicode, we're going to give you developers a way to add new keyboards to Mac OS X because Apple cannot come up with all the keyboards for all the languages around the world.
And you as a developer are the best to know where actually you should go, what languages you want to support, and what features you want to offer developers. So with Jaguar, it's pretty cool. We can offer you a way to actually have your own keyboards, drop them in the system folder, and actually being able to select them. I think it's a good feature.
So here you can see that I selected the symbol, Arabic. Oh, a new one, character palette. Hmm, what's that? Well, I guess we'll see. The Unicodex input, notice that this has been around actually for a while now. And here we have Korean, Japanese, Chinese, simplified traditional. Note that we have support for Eastern European languages, Bulgarian, Russian, Cyrillic.
The thing I told you about the concept of preferred language, that's where actually you're going to be setting that up. Because I could write an application tomorrow and it could have, let's say, French and German. But if you're running on a U.S. system, well, you want still the French to come before the German in this case. And this is where actually I'm going to set up the languages. Here I'm saying that French is second. Actually, I want Spanish third. I don't have Spanish here, but see, I mean, I have all the script, all the languages supported. Español, aquí estamos.
Après le français, voilà. Here you have a list of the scripts, okay, that are supported by the system. Great. So I have a keyboard menu and I have all the scripts. Perfect. Now I'm going to go and I'm going to launch Simple Text. Simple Text, everybody knows that. Typical text-edit, quick-draw application.
That's cool. I just bought Mac OS Jaguar. I have it on my machine. I'm going to ship it to my customers. My application looks great. I have a quick draw application. And of course, I cannot tell them that Mac OS X supports Arabic. Well, damn, I cannot access the keyboard. Well, yeah, it's not a Unicode application.
So don't be in this case when we ship Mac OS X 10.2 Jaguar. Make sure you support Unicode. So here you can see I can support the previous script that was supported in 10.1. Because here you don't have to be Unicode, but you get better support, of course, for Japanese if you're Unicode. But here you can see Arabic, there is no way I can get it. The character palette, no way, only for Unicode applications. The Unicodex input, no way.
What about TextEdit? Oh, look at that, TextEdit. I can type Arabic. I have a character palette. I have a Unicodex input. Pretty fly, as they say in France. And then I'll go-- it's very important to understand all Cocoa applications actually get the international support for free because they get Unicode support for free. And I'll go in more details about what that means. But I'm not going to use text today. Actually, I'm going to use WordText, my favorite application.
I'm going to change the keyboard, type some Arabic just to show you that, you know, we're not kidding. I apologize in advance. I don't know how to type Arabic, but it looks good. It does look good, look. I wrote that yesterday night and I still have some problems, so don't worry about the UI. Don't tell John Guernsey either, if you're not our UI guy. So here I can type some Arabic. That's cool. It looks pretty nice. It's NTIA. It's using Quartz. It's actually pretty fancy.
Now, let me close that. We don't need this anymore. I can maybe try to create a new file. I'm going to go back there. And here, I'm going to show you something nd I will now introduce the character palette. You know, sometimes the prime and the advantage with Unicode is that you can access a lot of characters now.
You can go and access characters that you couldn't even see before. So the prime that we had, that we were faced, is to come with a solution, but I would say an easy solution so customers can actually go and enter characters by themselves. So here what we have, the character palette, has this goal of helping you surf glyphs and characters inside a font.
So here, for instance, I'm going to go and switch to our favorite font, which is called Lucida Grande, the system font. And what happens is that in the bottom of the screen is the characters that are supported by the font. So I'm going to be able to surf, if I may say, different categories of characters. So here we have math, arrows, parentheses, and here I'm just on the Roman character set.
And if on the bottom I don't get a glyph, that means that, you know, that font by itself doesn't support. It doesn't support this character. It doesn't have an entry for this character. So here we're going to see for actually Lucida. So it seems Lucida actually supports a bunch of things. You can get the plus, you know. It has, like, it seems like all the math symbols. Pretty cool.
I mean, do you know how to enter that in Lucida? Ah, personally I don't. I can go-- here we can see that, for instance, it doesn't have these characters. It has the parentheses. That's cool. So here you can see I can type. Let me try to make that a little bit bigger.
Okay, so that's cool. I can type the parentheses. All of that is in the Lucida font. Hey, something that you probably didn't know, Lucida supports Greek. Look at that. I can actually go and type some Greek in here. I don't know if you can see, but you can drop the glyph. It's pretty nice. So here I see a product in Greek. So now what happens if I want some cool stuff, let's say a heart.
It works again! What the hell is going on here? I thought you had a Unicode system. I thought that was a Unicode application. Well, yeah, that's a Unicode application, but the Lucida font, you know, cannot have, you know, the 65,000 characters that Unicode has. But since it's Unicode, I know what's the character code. I'm not going to lose data in the translation. So let's look at a cool feature.
Font substitution. Oh, what's that? Font substitution is actually something that we have in our system that has this concept of, you know what? It seems what you're trying to draw, dude, is not the right font. Let me try to find it for you. And here, I just enabled this feature, and I can go and type many different things, and I'm going to be able to access glyphs that actually are not in Lucida. So here you can see that Lucida doesn't have it. You can see on the bottom there is no glyph for this font. But my application can display it correctly.
Thank you. - Well, the cool thing is that, well, it works for Japanese. I mean, in your, in Roman characters, in Roman languages, you know, it's cool. Yeah, that's true, it's cool, because you'll be able to switch between or like get some things that, you know, you didn't even know that was in the font. But you have to understand that in Japan, it's very important because the way, the way the whole language work, I should say. And here, we're gonna give you an easy way to access these 22,000 characters we put in Hiragino.
So it's pretty neat. Actually, I can continue to type. And once again, I have font substitution. My document, by the way, still thinks I'm using Lucida Grande, as a matter of fact, which is pretty funny. And here I can actually surf by different things. I have by category, by radical. Actually, a cool thing is, like, I really love these digits. I think they look very nice. I'm not sure why I'll be using it, but...
[Transcript missing]
So once again here, you can see the problem is that I will go to applications or I go to my home, for instance, documents, library, movies, okay, that's great, but in French, you know, it doesn't make too much sense. So I'm going to go back and I'm going to say I want Francais to be French to be first. So here, of course, the finder is not going to switch on the fly. You know, I mean, we don't want our users to get confused with the finder restarting. So I'm going to actually restart the finder myself. And we're going to see what happens.
[Transcript missing]
I've put it in Japanese, but I was afraid I would never have been able to manipulate the finder anymore. So let me go back actually to the English system. I go back, we launch the Finder. I don't think I need that anymore. And I want to show you something. So I told you all our applications are shipping with support for like all the languages, these 15 languages that we are shipping right now, we're supporting in Mac OS X 10.1.
As a user, and you probably played with that, if you get the information and you go to languages, you get a list, actually, of the languages. And here we have a typical bug. Once again, this is not GM software. And you can see, actually, that we have a list of all the different folders. You know the Lproj folders I told you about? In fact, here, this is what the finder is saying. And it's presenting to the user, saying, hey, you know what? This application supports French, German, Italian, Japanese, Korean, Spanish.
[Transcript missing]
But now, let me go back here. What I want to say is, English is my first language. But let's say that-- you know what? No, in fact, I want French to be my first language. I'm going to go back here. Here I have texted it with French and English. So my first language is English. Actually, let's do-- I'm sure I'm going to confuse you by now. So my first language is English. I go back here.
Here I have two files, two applications. One has French and English inside, which is like the one that we ship in our system, of course. So I launch it, and well, what do I get? I get actually everything in English. Fine, that's what everybody expects. But now the finder is in English, but my application doesn't have English translation. It has only French.
What you can see is that I'm going to launch the application and here, even if the finder is in English, I get to know the application localized in French. And here there is nothing to change in the code, and I get the support. And you can see even the window menu has been translated. The system is clever enough to achieve this for you.
The cool thing is that I could go back just to show you that it's truly a Unicode system. Japanese, here we go. And I'm going to put Japanese first. Actually, I'm going to put Japanese after English. The same application, once again, this application has not been localized in English. I launch it again, what do I get? Everything in Japanese. Once again, this concept of preferred languages, I think, are very powerful.
And you as a developer can take advantage of that. You don't have to localize for all the languages, localize for what makes sense. And you can tell to your users, they'll be able to use your application even on all the localized languages. So you could have a finder in English and you'll launch an application in Japanese if you want. This is great. And you can see, I mean, all my menus are in Japanese and there's no problem.
If you went to the original keynote on Monday, and I think actually it was in Scott Forstall's talk on the live channel, You know that we have spelling services in the system. Well, the spelling services on 10.1 were a little bit limited, as I would say. Well, the cool thing is that now, actually, we have support for better dictionaries, more languages, and here you have them.
I'd like to tell you, too, that we're working on Japanese. It's not there right now in this version of the system that you have, but we'll have that when we GM, I'll assure you. And the nice thing is that I can type in English. Hello. world, and if you're like me, you'll type it probably like that. So I can find, you know, the correct word. So obviously, this is the correct spelling. Obviously, this is the correct one. But before you go and do that, now I can type, uh, bonjour.
[Transcript missing]
A lot of new features in Jaguar, a lot of new features that you as a developer can take advantage. A lot of things that our customers are going to love only if our developers are taking advantage of them. Okay, now, very quickly, what do you need to be sure that your application supports international text? You don't want to get in the simple text case where you're going to ship an application with text support and your users are not going to be able to take advantage of all these new features. I will put this in two distinct paths.
The first one is make sure that your text handling technologies handle Unicode. And what I mean by that is you need to be able to do Unicode input, you need to be able to do Unicode layout, and of course display Unicode. And you don't want to do any translation at one point or another. You don't want to switch back between Mac OS X and Japanese because then you miss completely the purpose of going to Unicode.
Now, case one. That's the difficult case. If you're a Cocoa application, what do you have to do? Well, you don't have to do much, actually. You don't have to do anything. I swear, you really don't have to do anything. All controls in Cocoa are actually international ready. Cocoa, since the beginning, has been supporting actually Unicode. And they do Unicode layout, they use AdSuite, and I'll go into details about what AdSuite is, to do their Unicode layout, and they render Unicode text. So if you're a Cocoa application, you're done. But don't leave yet.
Case two, Carbon. It's not more difficult, it's just different. It's different in the way that a lot of our developers coming from Mac OS X never really had a chance and never really had an easy way to do Unicode input. They never really had an easy way to drag and drop a control, a text-based control, and boom, it's going to do Unicode. Well, I think now we have some pretty cool solutions.
Just as a reminder, before you had to install the TSM handler, text services manager, if you wanted to do Japanese, Chinese, Korean, you had to go through and, like, you know, management input, which, you know, you had to spend a lot of time on your code just to make sure you handled text right. I mean, here you have a list. I mean, if you wanted to do save and open, you'd have to convert. I mean, a nightmare.
With Mac OS X, we introduce new technologies that can really help you move forward and use Unicode at the best. The first thing that comes to mind, if you need to display static text in your application, you need to make sure Unicode use the Joe Theme Text Box APIs. These APIs are in the Appearance Manager. They take a CFString. They have this concept of phone fallbacks I showed you. It's very cool for static text.
If that's not enough, if you need better control, if you need to display vertical text, for instance, you have two choices. Actually, I would say you have one choice. Go directly to Hatsui. Hatsui is a prototype for Nikon imaging, and I put a couple of slides about what Hatsui is.
Now, if you have text editing needs, two different solutions. Easy one. In the toolbox with Mac OS X, we introduced a new control. I think the tag is Chi Unicode Text Edit Control. And that control, when you create it with Create Unicode Control, you get full support for Unicode. And this is very cool because you don't have to manage, you know, like the TSM handlers. You don't have to manage what keyboard is going on right now. You just have to find out what the users have typed. You get back the text. You can just focus on what your application has to do and not how you should handle text.
Another solution, if you need scroll bars and things like that, is MLT, the Multilingual Text Engine. The Multilingual Text Engine has been around since Mac OS 9, if I'm not mistaken, and on 10, completely blossomed by the use of Hatsui. It's very nice. It's very easy as well to migrate from a text-based implementation to MLT.
Something to remember, CFString, it's pretty nice. It's an encapsulation object that's going to shield you from dealing with encodings. And once again, remember, to achieve this level of support, you need to use Unicode. Make sure that you pass Unicode strings to the control manager. Make sure you pass Unicode strings to whatever toolbox calls you do.
Quickly, what is AtSui? AtSui is a prototype for Unicode imaging. It has full support for Unicode 3.2. That means we support surrogates. That gives us access to virtually, if I'm not mistaken, a million characters. Hello, welcome to Earth. We support combining characters and complex scripts, but thanks to this technology that you can type Baidai, that you can type, you know, Arabic, Hebrew, that you can type complex scripts such as Thai and Indic as well. It's very nice. And once again, it replaces WordScript 1 on Mac OS X. And that's the technology that enables the system to have this concept of font substitution work.
This chart is actually these graphics just to show you the architecture for Carbon application and what level, what pieces you need to hook up in order to take advantage of these technologies. The idea is to understand that ATS, which is Apple Type Services, is the engine that gives us access to all these phone formats we support on Mac OS X. And on top of that, we have ATSUI, Apple Type Services for Liquid Imaging, that can use two different rendering engines, Quick Draw or Core Graphics. Core Graphics, which is the default and we encourage you, of course, to use.
Core Graphics is the technology that gives us the transparency. It's the technology that gives us the nice anti-aliasing. And on top of this, you have different layers as a developer that you can access to make sure your applications support unique color. You could use the HI Toolbox, as I mentioned, or you could use, of course, Cocoa.
And here we have a typical example, rotated text done with Etsy. One line of text, four different scripts, one, two, three, four. Here we have European, Japanese, I think it's Inuktitut. And then the last one is probably Georgian. And I've been told it's not the Georgian from the southeast of the United States, if you know what I mean. It's a private joke. I'm sorry.
Quickly, very important concept. If you're a Carbon developer, MLT, the Multilingual Text Engine, you'll get for free a bunch of things, a lot of things. One of the first, of course, is the Unicode support, and you get input, editing, and display. The nice thing, and I'll let you read the slide, the nice thing with MLT is that when you're going to create one object, this object is going to install all the TSM handlers, it's going to install the scroll bars if you want scroll bars, it's going to support drag and drop, it's going to support for you, if you wish, embedded objects such as movies, sounds, pictures. And one of the main advantages on top of this Unicode support is that it gives you access to all the AdSuite features. So all the style attributes that are supported by AdSuite, you can pass them directly to MLT.
And that, to really understand what that means, you'll have to actually go in the headers or check WordText, one of the applications that uses MLT and AdSuite, to really understand how powerful that could be. And of course, Quartz rendering by default. You don't have to do anything special. You don't have to go inside the core graphics framework. No, everything by default on 10.1, we're going to get you a nice anti-aliasing.
Very important, I need to touch on this. CFStrings, use CFStrings as much as possible. It's great because CFStrings are going to really shield you from having to deal with encodings. You can create a CFString, let's say with your Mac OS encoding string, and then from there you're going to be able to ask for UTF-8 or UTF-16, UTF-16 which is what we use on the system.
So it's an easy path migration, it's an easy migration path for you to move to Unicode because you can still have your strings in your application. Using Mac OS encodings, you can load them from your resources. And then use that and you pass Unicode text directly to all the other toolbox calls or MLT or Hatsui.
CFStrings are Unicode strings. We translate them as necessary, but it's great because the main point here is that Unicode can represent any language, and here, thanks to CFString, in your code, you can represent any language. Quickly, I'll touch about localization. To localize your application, you have, I would say, two things to do, two basic things.
You have more things to do, of course. The first one is you're going to have to extract the strings. So as a developer, you're going to have to generate some kind of documentation on what needs to be localized. And the second step, of course, is give these strings to a translator.
For that, we have a couple of tools that can help you. The first one is AppleGuard 3.0, which works on Mac OS X. And a set of APIs which are called Monty. And I'll go in more detail about what that means. Once again, I need to reiterate this. For localization purposes, I really encourage you to package your application. It's more flexibility for you as a developer. It's easy to adopt. And the nice thing is that, of course, you get more languages in one package.
The cool thing, too, with bundling and packaging your application is that you work on version 1.0 of your application. And you're done. You have English. And you want to ship your application as soon as possible. Well, you can start shipping it. And then when you do your Japanese localization, by some process, which is up to you, you could actually install the package yourself inside the current application.
To do this, you need two things. Make sure you support Unicode, because you don't want to go in primes with encodings and getting garbage on the screen. And the second one is you need to be bundled. You could actually just drop the French .L approach or the Japanese .L approach inside your application. It's very, very flexible.
Now, let's talk a little bit about Apple Glot 3.0. Apple Glot is a text extraction tool. Okay, remember, it doesn't do, like, you know, automatic translation. But the nice thing with that is that it's going to extract the text from your application, put it in some XML file, and you can actually parse this XML file or export it, send it to your localizers, add some comments. It works on Mac OS X, which is a main advantage.
And the cool thing is that it's going to work with Cocoa and Carbon applications. Okay, if you remember the old versions of Apple Glot, of course, they will not work with Cocoa. Now we support this, and it's pretty neat because you could have, like, you know, resources, or you could have, as well, nib files. You don't have to be resource-based, and it's going to work nice.
Another advantage of Apple Glot is that, I think we call it an incrementation localization tool. And what I mean by that is you worked on version 1.0, you shipped in... Japan and in U.S. in English, so you have English and Japanese. Now you're working on version 1.1. Well, you don't really want to retranslate all the strings from version 1.0.
What happens is that Apple Glot gives you this opportunity to set up your environment. You're going to put your old version, 1.0, the new version, 1.1, the previously localized version in 1.0, and Apple Glot is going to be clever enough to send you back the strings that are new in your app. So if you had, like, you know... 500 strings at the beginning in 1.0, for version 1.1, you maybe modified a couple of windows, a couple of buttons, changed a couple of strings.
Apple Glot will give you only the strings that have changed, and will automatically put back the old ones from the previous localization. That's what I meant by incremental localization. And that's, I think, a great advantage because you don't want to spend time and paying localizers again to do twice the same work.
But let's say you don't have time for that. Let's say you're a small company and you want to find out, you know, I'd like to go for a Japanese market. What can I do? Who can help me to achieve this? Well, once again, we put a couple of deals on for our ADC members. And here at the bottom, actually, you'd get the programs. Remember, developer.apple.com/marketing, localizations.
And the nice thing is that, so we have these deals with translation and localization companies. And these companies could help you just localize strings, or if you want, they could give you a quote for actually, you know, taking the whole process. So you give them your US binaries, your software, your manuals, and they could actually do the whole schmilblick for you.
And here we have a couple of the ones that we've been working with, RWS Polyglot, Fuscio Translation System, LogTeams in Spain, and we have many more. The nice thing is that as a community, don't hesitate to send me an email if you need to have references or if you're not sure.
If you want, if you get a quote and you're not sure about the price or if you want to find out, you know, who's better for Japanese, who's better for European, send me an email and we can exchange some information if you want. Hopefully I can help you.
All right, in summary, I think the summary is pretty straightforward. Yes, international markets are opportunities. And hopefully, even if you're localizing your application now, I really think you should consider maybe expanding. Maybe now you're only in Japan, or maybe only in France. Well, try to enlarge the markets you're going after. Remember, France, Germany, England, key markets for Apple in Europe. Japan, it's a must do, must have. It's a must. You need to go towards this market.
To achieve this international support, there is only one way. It's to be Unicode compliant. And for that, hopefully I gave you a couple of technologies that can help you achieve this support. And once again, we will never, never say it again enough. Unicode applications are the future. And in your case, if you're here, it's because you're probably already in international markets or you probably want to enlarge your markets. The only way that you're going to be able to give great features to your users is to go to Unicode. And of course, for the support for all these languages, make it easy for our users. Make it simple. Bundle your application.
All right, here we have some URLs about the things we talked about today. There is one place where we put all our information for Carbon international technologies, and it's in developers.apple.com.intl. If you want more information about specific regions and the markets that Apple is going after, I encourage you to go to developers.apple.com.regionjapan, the second URL.
More information on the Top 50 programs for European are on the third line, and should you have any questions, we have representatives from WWDR in Europe here, so you can come after the session and we can talk if you wish. Technical reports, code charts, sample code, special strings, special text files for Unicode at the unicode.org website, of course.
Fonts, we all need fonts to support these new languages. If you're developing your own font, if you want fonts, if you want to check out what Apple has been doing lately with fonts, developers.apple.com.font. And if I'm not mistaken, all these URLs are actually present on the website, WWDC. You have a Uberall URL.