---
title: WWDC2001 Session 129
framework: wwdc
role: article
path: wwdc/wwdc2001-129
---

# WWDC2001 Session 129

## Transcript

Kind: captions Language: en so since we're going to be talking about application organization we're going to do a presentation in French today okay just kidding but we'll have some Irish people all right I like to like welcome you to a peak to session 129 Mac OS 10 application localization last year we talked a lot about how you're going to be able to localize your application on Mac OS 10 we talked about this new bundle mechanism which going to make your life easier to ship one application in several languages we talked about Apple Blood three and I think this session will cover actually how you're going to be able to do the real work this year we have like the whole solution for you and tonight going back yota you'd be able to start actually localizing your application in in French I'd like to introduce for recession chris hansen who works in re here in Cupertino and will talk about like the advantages of Mac OS 10 and the international issues thank you so what would you be on Bienvenue or something like that so welcome everyone thank you all very much for coming it's very exciting for us to be able to talk about what we've been working on for the last year or two so we certainly appreciate it before we talked about the Mac OS 10 localization toolset I want to first just review the Mac OS 10 international architecture briefly and discuss as well what Apple has done so far in terms of locale support script support and language support in the OS so so what the michaelis international architecture the major difference from the users perspective between the Mac OS 10 international architecture and Mac OS 9 is that Mac OS 10 is a multilingual OS of course so the user is able to select the desired UI language they can go to the International System preference and choose the language they would like and the OS responds dynamically now in order to make this a good experience for our users there were several things that we needed to do so the first thing we need to do was of course to support the application packaging mechanism in our applications so it was possible for us to package together multiple language UI's within a single application together with a single binary but it's not enough just to package your application and localize the application and the relevant target languages we also needed to make sure that the applications and the OS behave propably for the different regions of the world so without required first of all was us to support the different locales that might be required so we needed to make sure that you know our friends in Asia and Europe were able to do things like control their keyboard layouts their their dayton time formatting their printer sizes and things of that sort so in addition many of our users might want to do things like display text in a document in multiple scripts or to cruise the web and look at japanese web pages or inner text in japanese no matter what UI they happen to be running in the OS so we needed to support the international technologies in the OS such as unicode for tux rendering and font management and japanese text input and things like that that allowed us to give that capability to our users so always remember when you are converting your application to Mac OS 10 or designing an application for Mac OS 10 that the environment your app will be running in is a multi script multi locale multilingual environment and use these international technologies so that your application can also be a hobby international player so use that you know unicode vertex tux rendering and font management those things I mentioned application packaging for multiple its localization and so on so what have we what is Apple done so far in our current Mac OS 10 product to support locale scripts in language you eyes well we shipped the first version of Mac OS 10 earlier this year and that that version of Mac OS 10 supports seven language you eyes French German Japanese English Italian Spanish and Dutch when I first wrote this slide I put all the correct language is there but I put six language you is not thinking English is a foreign language but English is a foreign language so can you make sure to include that so there's southern language you eyes available our users can select any of those in the international system preference and use that as their preferred language we also support all of the locales that are associated with those languages so our french-speaking users in Quebec have the appropriate regional support our english-speaking users in Britain in Australia and so forth have their appropriate regional support they can use the date and time formats in the video formats and all the other regional formats in addition we support in the base OS Roman and Japanese scrap in his first version of the Mac West had so those users do you want to display a document that contains text both in Japanese and roman languages or cruise the web and look at a webpage that contains Japanese print Japanese so on those capabilities are in the base OS not related to the UI that they're running so they can introduce or can do that it's important to note that in giving our users these look this locale support the scripts support in this language support we package this all together in a single CD as single deliverable it's not theirs in a multiple deliverables here there's not a French CD that's shipping into France you know Japanese CDs shipping into Japan we patch this all together in one single deliverable so our international customers are buying the exact same CD that our user certain behind here in the US this is made possible by the technic technologies and we'll talk a little bit more about that so now as a fall into that just last week we shipped a follow-on product a later version this CD which contains additional language support so there's eight this 1003 version contains eight additional language UI's Korean Chinese both simplified and traditional the four Nordic languages and Brazilian Portuguese so the eight additional language UI is in there and also of course supports all of the associated locales that were associated with those languages in addition we've added to the already existing Roman and Japanese script support support for Chinese both simplified and traditional and Korean scraps so our users that receive this CD key on do all those things you know display document cruise the web in all of the CJK scrubs Chinese Japanese Korean and Roman of course so that's a really a great product and sure people will really like that so all these international technologies I've alluded to you like Unicode for text rendering and font management so on they have other sessions here at WWC and I encourage you to go to those or review them for some that have already occurred but I do want to touch on one area in particular and that's application packaging and how that enables multiple localization so you're all familiar with the application packaging mechanism that's used for an application packaging I use that in quotes online it's a single file model you have the resource for key data fork your HR is typically in the resource fork resource in the resource fork your executable is typically in the data floor so this um this single file model enables a couple of very nice things so one thing is it's very simple for the users right so there's a single icon in the finder double clickable the user doesn't have to know anything about the internals of this file structure the other thing that's very nice about this this mechanism of this model is that the executables and the resources are separate so we can localize an application and we don't have to recompile the code typically we don't have to you touch these executables so that's very nice advantage of this resource fork data for split but this model does have some shortcomings so on especially with modern applications so one issue we have is that there's no support for multiple vocalizations within a single resource Clark so if you want to ship a french journal in a Japanese version of your application well you have to create three versions of that application localize the h.i within those resources to the appropriate target locale and then you of course have duplicates of the executables in each of those files there's no support from multiple localizations the other issue is that modern applications have a lot of different types of files that don't fit very well into the resource for resource sort of model so things like plugins and help files other things like that don't aren't easy to shoehorn into the resource fork format so you typically have a bunch of loose files sitting around that may be necessary or or useful for your application to Ryan so that's the necklace 9 model right so on Mac OS 10 applications are packaged as a set of folders or folder hierarchy so there's a place within this folder hierarchy for for example your executables so you could for example have multiple executables within this application package for different platforms so if you wanted your application to launch a different executable if your user launched it on Mac OS 9 you can do that there's also a place within this application this gives me this folder hierarchy for multiple localizations so the language project or lproj folders contain resources for different locales so you can recognize these language project or lproj folders within the application package by name by language name sometimes they'll be called like english lproj french lproj Japanese dotto approach things like that you recognize this mechanism also supports the ice and ice oak naming convention and so for example you might have en dot lproj which would be universal English content you might have je a dot lproj Japanese Universal Japanese content an en underscore GB lproj which is British English specific content that mechanism is a little more flexible than the language naming is recommended there's also a place within this application package for other stuff so things like help files and plugin since package data other metadata can be packaged together within this application package structure so you see the point of this the purpose here is to group all of these required resources together into one folder hierarchy and yet still make it so that still make it simple for the user so they see one double clickable application in the finder so let's look at a very simplified example here this is a assuming simplify there's I've left some things out of this but there's a simple app package you see at the top there on mail app or mail the user will still see a single icons double clickable item if you actually see on that in the file system you'll see there's various folders under there and files you know looking on the right side of it the Mac OS folder is the contains the executable for the Mac OS platform you could potentially have other folders there supporting other platforms if you look on the left side of it the resources folder there's a couple things there there's the there's a Maya our SRC now that file contains global content content that it applies to all of your localizations and does not need to be localized so that might contain things like icons or pictures or other things that don't require a localization the English lproj contains the content that does require a localization so for example the localized are SRC should say localize daughter Cersei would contain things that do require location your strings your layouts your other content that should be localized on a Pirlo caliper language basis so the strengthens mechanism mechanism I wanted to localize this application into say French or German all I need to do is duplicate the English all proj name it appropriately so French lproj geranyl German lproj etc and localize the content within that all podge so I can use you know the localization tools they'll be discussed to localize that content when I then if I then put those up ah just back within this application package as in this picture so I have a friend shell punch there are German L punch there the great thing about this is that this application is now localized and multiple analyzed so if the user the user that has this on their system was running with French as their preferred language let's say and they launch this app it will show the content that's in the French shell proj it will have a French UI and they decide to switch to a German as a preferred language or more likely another user it's a multi-user system now the user logs on and they want to be running in German they want Schmidlapp it'll be running in German okay very nice for the user so what have we learned in doing these couple versions of the OS doing the multiple end goal that it's helpful for you guys well there's really two main things one is to use this application application package mechanism this gives you a flexibly flexible delivery mechanism so on the one hand you could potentially package together multiple you eyes within your within your application with one executable and deliver that in a single CD or single deliverable to your users on the other hand if you don't want to do that for whatever reason you could also deliver that language later as an add-on a plugin of some sort so you've could for example ship your application and version of your application then deliver a language over the web as a DIN plugin it's a separate folder all the stuff can just be plugged into your application and will just start working the other nice thing about this is it's very flexible for your user so so many of your users may want to run their application run their system with other languages than English as their preferred language and they would like it if your OS if your application responds to that and displays its UI in that language so the other thing that the other thing we learned is to use the Mac os10 international support that's available the never forget when you're working on your app there is a multi subscribed multi locale and multilingual environment and use all the international support the Unicode for text rendering the font management ml te all the different things other sessions that you can look out on that use those and if you do use those technologies then there's a lot of really cool things you can do with your internet for your national users and your application I'll necklace time so with that I'd like to turn this over to Jacque Sampson who's our localization tools Development Manager and he'll talk to you about the location tool side thank you very much thanks Chris we are delighted to show you apples very latest localization tools today namely Apple dot three and Monty Apple got three is apples incremental localization tool it supports incremental localization for classic carbon and cocoa applications it uses the Monty API to access and decompress resource type structured data Monty which was announced at last year's conference has been updated to support apricot trees features and requirements but before we get into the detail of a poplar tree let's talk about the concept of incremental localization what is incremental when we talk about incremental localization we're talking about the reuse of translations that have been used in a previous version of a particular application this assumes of course that localizable elements in the previous version are exactly the same in the current version nothing has changed let's take an example say I've developed super mega app 1.0 okay it's brand new all the GUI are populated with text rings which are in English as we've already heard from Chris Mac os10 applications are inherently multilingual they can support multiple language translations we can translate all the text rings in version 1.0 into various languages and we can enclose them within the application framework so now I realize that super mega app I'd like to add some extra features now not everything has changed we would like to pull forward automatically the localized elements that have existed in the previous version this leaves us with just the work of translating the changes that have occurred in version 2.0 this is the essence of incremental localization some of you may be familiar with previous versions of Apple glut such as 2.4 apple glut 3 is completely new it has been designed and written from the ground up it is based on the Monte and architecture and technology it supports the state machine our state machine architecture and has a very powerful extensible plug-in system this is available too not just in house but also third-party developers but rather than talking about Africa 3 I'd like to hand this presentation over to Mike Butler who is the principal engineer and developer for Apple blood ok I'm going to talk to you today about Papa 3 and the easiest way for me to do that it's actually worked through a couple of examples a couple of things you normally do with it and so some of the things you're going to see as we work through these examples and we're going to create a new environment and I'll explain a little later what an environment is but if you've used epic lot two before and you'll see that the environment is actually quite similar it's only some small changes I'll point those out and we'll show you how applet figures out where to pull the right information from to show you what we've done to hopefully make it a little easier to use for example we know that you typically using Apple app you're going to jump out into the finder jump back into a back lot jump into your own application that you're localizing and maybe run a few tools come back into a block we're trying to make it all much easier flow much better as Chris has explained and OS 10 provides support for a number of different locales all winning the one package so obviously Apple glad has to support this will show you how it does it and have seamless cities and we'll also take a look at some of the support files adapt about users and producers and we'll show you what we've done to hopefully make these more accessible to other users or other tools and other processes and finally we'll show you just incremental localization and how it'll work with package that's classic apps on the Left cocoa carbon all the bits and pieces you're going to find on OS 10 so I'm just going to go to the demo now and wake up our machine can you raise this one okay so the first thing you're gonna do I'm gonna launch a pit about here and I'm going to go and create an environment now I'm a polite deals with a large number of files and most of these will have very similar names and there'll only be just different versions of the same file so we need to have a safe way of knowing which file we want to pull information from and so do we do it right safely so just close up that example and we use what's called an environment and basically it's a hierarchy of folders and each folder in this hierarchy has its own specific job so when we put something in there we know that we can safely deal with it a certain way so if I just open up an environment there I'll show you what it looks like an apple going go to you okay I have an iron environment here actually what we'll do is we create an environment it's probably better to go from scratch and great environment we'll just go up to the tool menu choose create empty environment I'm gonna pick where we want it so I'm just going to pick a new folder in here and type in the name of our example okay now I'm going to tell a padlock to populate that with all the folders that we need so if I go and look at that in the finder go to the same place again we'll see there's all the folders that is created now as I said most of these will be familiar to you from apple da - and some are new like we have a temporary and we have a translators folder then to support Monday but most of them as I said are as you seen it what I would like to so I am this is my first time around I have an brand new application and I need to produce a localized version so what I'm going to do is drop in those files those applications that I want to localize simply drop them into the new base folder now if I go and open that environment with that but what okay we choose ok so you can see applet here is mimicking some of the folders that you in the finder there so we have a new base new logo they so look and anything that's in those folders will show up here in these columns so I true into just copy and mail into new base so they show up here in the new base call you know as a crystal mentioned we have support for multiple locales so previously we would happen that you would have just run a plot put in your translations and whatever translations you put in well that meant it was for that language so if you did put in French translations we had a French version and this time around you need to tell a polite what locality you want to produce so if you look at the title here for example environment here we're choose we have our base locale is English and our target locale is French these are just defaults from my preferences if I want you to change them I just go up to the Tools menu choose and set base targeted locales and I just pick a few if I pick whatever I need it from here and there's only a few here just as just in this preview release fuel as we as we go forward we put in the rest of the locales so I'm just going to stick with French here and what I'm going to do is I'm going to choose this copy here and I want to process that you know there's a number of files in the environment so I want just want to tell that glad I just want to project just want to localize just copy so I just tick here and as you can see it tells us that one item is selected for processing okay so I'm just going to go ahead and go to the Actions menu and choose generate class Therese and applicants going to start working so what after that is doing now it's running through all the different resources all the day that it can find and looking to see if it can find any textual information or localizable information pulling it out and it's going to store it in one of two places so if we have a translation available and it'll get stored in what's called an application dictionary if we have no translations available then the information will be stored in what's called a work glossary and this is our first time true so we shouldn't have any translations available so everything should just go into the work classroom okay this is going to take about another 30 or 40 seconds so once we have our work la Sri and we can start working with that and put it in our translations and which should be any minute you name so at the moment as you can see from the progress there what it's doing is its reinserting information into new files so it's just it's a tetanus a new file stage and putting back information back in and as we've had no translations and this might seem strange but what's really happening is even though we have nothing you know translations we've still produced a localized version so this is still a double clickable app here if we had translations what would happen is the translations would be put in it still be a double clickable that when you ran it you'd get your localized in your partially localized application so if you just take a look at over here you can see that our cluster is produced for a disc copy and we'll just have a look at that now I know um if you've worked with a lot to you you see much simpler work lesser ease so this actually would look quite daunting or complicated but if you also notice it's an XML application I'm an XML file so this opens up our cluster ease to numerous other tools that can read XML or if you want to write your own - you don't have to try and figure out what a Polacks form it is you don't have to write a parser for that you just use XML use your own XML parser that comes with the system and you gain instant access to the work plus trees or any other files that I could have produces in XML also being XML you have you can take advantage of xml tools that are out there and as we go forward XML will become much more popular as we gain as it becomes more mature it find its way into all types of applications so your favorite FBI your favorite text editor will eventually have XML support so this text editor here actually has some XML support I can go in and turn on what it called syntax ailing now if we look at that XML file again well it's still a little bit is still quite complicated it stands out more so the information you want stands out more and you can tailor to you can tell it what kind of weight what way you want the information is to be displayed as we go forwards and you may do something yourself which will translate this XML into HTML you can view it that way and maybe use back-end scripts to populating and guesses or whatever so if we take a look at this and work la Sri you if you're used to rapidly to you'll be used to all the information from wind file goes into one work glossary now we have a packaged app we have loads a different files there inside the package so instead of having a separate work class three for each file we have all of the all of the appropriate files all the information from all of the different files goes into the one were clustered this makes it easier for you to work with so if you can see here we have all our info.plist information is gone in here so we have like the bundle name so we can change the name of the application we also have some nibs here you can scroll down through you can see more nib files so what I'm gonna do is I'm going to change our enter some translations so if I pick a couple of easy ones we think the name of the application itself okay so I'm not very good at French unfortunately so I'm just going to achieve you can call it follow the phony was always so easy okay and one of the other like here I'm the text and I'm entering that I want to have the translator text and I'm entering it's coming up in a different color it's a visual cue that I'm typing in the right place and you can do some much more strong strict things I believe a future version of SAP application will not let you type and say tags so that you can't damage the format okay let me pick something else so you have a look for a window something that'll pop up in the menu bar okay so again cheese so all I'm gonna do is save that and go back into a padlock now if I go up to the actions I can produce a finished version and it's very similar to the generate glasses but this time it's going to go true turn away and it's going to do the same stuff again it's going to try and pull out all the information it can and look see if it has translations for us reinsert or whatever except this time round and we're going to find two translations so there's going to be the name the name application name is going to have fr that disk copy and the window title will come up as or they'll have a translation for our window so this time around not everything will appear in the work blustery only the things that need translations you want to work class sorry so the two files that we've got are the two and translations that we've just entered they'll go into the application dictionary so again we're back at brewery inserting information into the new files here it's just finishing off so when does finished and what we can do is we can actually go and have a look and see if our localization our translations work okay so it's done so we can do now is we can go to our system preferences wait and it's over on this window machine over there okay so now if I go to international and choose French as my main language that with the wonders of my co SN technology I should be able to run this copy here and see it in French or at least my version of French okay so there you have dis copy the name let's translate it so as you noticed and the disk the information for the name of the application came from the strings from the info.plist strings file and the name for the window came from completely separate to a nib file so we as it translator I wouldn't care it would all just be in the work class Sri I do whatever I have to do and it would all just work the whole point of this of this version of Apple Gladys says supposed to hide any complexities of our stand from you okay so just good that so now we will take a look at a slightly more complicated example so if I open up another environment which has a few more files in it okay so I have a whole bunch of files in here and I see I have new disk copy okay so I know I've just done this copy so what I want to do is not have to go very insert and it re-entered those translations that I've just done takes too long to enter those two strings okay so what I'm going to do is I have my original versions here but I'm just going to copy over a whole bunch of them as well at the same time so this is overlooked so it goes in the lock folder so these are previous localized versions of my of certain applications now if I look at my own base so we copy all these over to the old base folder and these are the old original version of the applications now if I look at that environment again now if I go back into a plot we should see there it's after automatically matching up all those files that I'm after putting in so it knows that if it goes here it can find the previous old address book and it knows what goes here you can find the previous old localized version of address book so and what we wanted to do with a pig lard we wanted to make it as an extensible as possible why did somebody say sorry and so what we did was we from the ground up we made as a plug-in based architecture and we didn't just like leave one section of a be plug and we try to bring that philosophy true at the whole app so you can write plugins that will provide services to Apple ad itself you can provide plugins that can provide services to other plugins you can provide write plugins that can process data that doesn't already process and you can write plugins that just sit there watch all the data flying by and say required information or maybe change the behavior of certain plugins and so the benefits of this are the general benefits you get from plugins and from our point of view we have quicker update time we don't have to turn up a lot of gain if something comes up if the feature comes up that we hadn't thought of and we maybe just do a plug-in and release that plugin it's much simpler I am for yourselves if a process that you have that doesn't quite work with Apple glut or doesn't that doesn't support it then there's the ability there for you to write plugins and and if you've thought of writing plugins if you come up with something that you could write a plug-in for then maybe somebody else could use it so maybe you could give it to them or maybe they've already done it so you can just take it from them okay so just a couple of examples of the kind of that we wrote and the first one is the nib to a plugin and you've actually seen that without really noticing it and the nip to a plugin basically allows a Pagar to process nib files which is what I did earlier and it's a good example of a plugin because and we were able to leverage from work that was done by other people um the interface builder team had already written the - it's a command line - the UNIX command line - and that was able to go take a nib file take its text out and produce the strings file from that and then on the other side take that strings file and reinsert it back in again to complete that nib well again so Apple had all Apple god had to do was then to write a plugin that would call nib - whenever it encountered a new file so we're processing our package here we hit our strings well around we hit or maybe there is a localized resource in there then we hit a dot nib so applet just goes right nip to do your wonder stuff there and it puts out all the information and I forgot goes along as normal and all the information still ends up in the same place still ends up in the work class or the glossary that you've seen there and you normally work with so you just if you're just a translator everything that you everything that you want disappears in the one place you don't have to worry about how you would deal with new files you don't have to worry about how you would deal with classic apps I know there are kind of plugin that we used was rest at and when we were developing applet and obviously we wanted to be make sure that we were hidden every resource type we should be and we also wanted to know we were pulling out all the information out of those data types and we wanted to know how long it was taking us so we wrote a little plugin it's called res stats and it just sits there much as all the information fly by and it just takes a few notes so at the end then it just checks out a file and and basically just tells you right you had ten resources in there and they were black and of those ten only two of them produced any localizable information and entered ten ten strings into the work la Sri so you're able to see one of the strange things are one of the in lately things I suppose was that we saw that maybe just ten percent of the resource types that we were supporting had any localizable information so 10 percent produced ninety percent of the information that we were localizing so just by being able to produce a small little plugin that's at their watch things go by we were able to find out that sorts of information and we were able to see that yeah I'm looking at in resource or here I can see ten resources yeah Apple operated worked with ten resource and they can see that there was ten strings in here yeah grant after that worked at ten strings so it was very handy for us so in a similar situation if he needed to check things if you need to add something or watch something you can write plugins to do that at this point I was supposed to hand over to Christian but so just before Christian does come up I'll just tell you that Monty is a core technology that Apple uses it's the it's what allows us to access and resources whether in the data file or in the data for our in the resource fork and and it lets us do that pretty seamlessly so I just like to welcome Christian Walsh on stage to talk to you about Monty afternoon hello so Monty is a technology that's Rhian Apple developed to deal with structured binary data types or resources to you and me and Apple glass uses Monty for its carbon and classic resource supports but one of the best things about Monty is this we get full Unicode support Monty is entirely Unicode based so all the editing all the extraction of text it comes out of Monty in Unicode where we want to make a change it goes into Monty and Unicode Monty handles the conversion of that text from Unicode to whatever the native encoding is so for classic applications when we ask for some text to be set to Japanese Monty will handle conversion from that Japanese text to shift-jis encoding or whatever day max using as part of this we also have data validation so that if we took the same Japanese text and tried to set us into a French resource we get an error saying that well you said that this resource is French that cannot encode this particular stream so not going to let you and doing things like this prevents your editing tools from corrupting the data you're editing which is an occasional cause of these bugs that it takes weeks to track down so also we try to make Monte extensible anyone who's had to deal with frameworks and class libraries particularly power planters is the most popular will find us they keep having to Rev the people translator every time a new subtype comes along you've got to rev the whole P pub translator which is quite big now but with Monte we've designed a system whereby we just have to add the extra pieces just add what's changed and we can leverage on the existing stuff we've done so it makes it very quick very easy to do this it also makes it easy to control the changes but if you have a lot of templates and you still need them for your own process we have a template conversion tool which will automatically converse the res editor resource there are templates into Monte translator is suitable for rapid loss which is a great starting point for you to get advantage of all the features that Monte will offer you okay so I'm contrast' Jack Sampson to come up and wrap up the session oh thanks Christian okay we got there um you have just seen yes apples very latest localization tools and technology in action you've seen the power of Africa 3 and yes the very powerful Manti technology and all running a Mac OS 10 we've gone through incremental localization of classic carob and cocoa we've leveraged previous translations we can give better efficiency and accuracy of localization has been examples of the scalability of apricot 3 with its extensive plug-in technology Mike has gone through the nib tool plug-in and the res stats plugin all the files that apricot users are in XML format and have the capability going forward even for an XSL farmers you've seen a Monte translator which we've been able to update quite easily I'm using the P Pub resource now do we know what I forgot 3 is those I'd like to take some time to talk about what apricot apricot 3 is not apricot 3 is not a machine translation tool neither does the support document localization or multimedia localization if you're so inclined please feel free to write a plug-in which will interface what a plot 3 so that you can use already well-established translation mechanisms at this venture I'd like to hand the presentation back to Xavi a will address the very burning question where can we get up a glory Xavi a [Applause] okay just a quick wrap-up I'd like to remind you that with Mac OS 10 we're shipping with several languages as avi mentioned in the presentation as well we just released like a new version for traditional simplified Chinese and the rest of the European language is one out of two Macintoshes are sold outside of the US so for you as a developer it's very important as well to localize your application so of course French is one of these languages but don't forget Japan and China who are like in our main markets now we're like things are growing very fast we showed you in this presentation but actually now we have the tools for third parties for you to have a localized application support all these languages support application vendor and actually support whatever needs you have as a third party so we saw that Monty is very powerful because now you know it was a nightmare to translate before we blacking a resource or things like that let things like PPO be is well with Monty you're going to be able to actually write your own defined templates an apple gut will take like you know advantage of all the plugins we'll be able to write so I think I'm very happy about the work that Jack's group has been doing this last year it was very difficult that you support many platforms and many type of objects and believe me it's very great to see Apple Guthrie in action so why do I get why do I get I forgot three and Monty soon you get it soon and actually we hope to post it on the web probably next month maybe before that but this is something that should be able to download directly from a website of their apparel apple.com in the international web page we have already posted there some glossaries some of the developers have been asking about that right now we have support for French Italian Spanish German and English of course we'll be adding Japanese probably next week and we hope to have of course simplify traditional Chinese Korean in the upcoming month so please try to download the Monty SDK try to get like you know your hands on Apple good three and of course try to write as many plugins as you want to integrate in your like you know localization process should you have any questions decided to contact me Xavier at apple.com be more than happy to let you know show you like the powerful of Monti if you need to get your hands on waste DK and you cannot find it please send you an email you
