---
title: WWDC2000 Session 158
framework: wwdc
role: article
path: wwdc/wwdc2000-158
---

# WWDC2000 Session 158

## Transcript

Kind: captions Language: en so you're all very welcome here today it's great to see such interesting that want the first of two this week mmm my name is Colin Murphy and I manage a localization tools group for Apple so I'm absolutely delighted and privileged to be here today to announce two new technologies that are going to make your lives as localization tool developers and tool users a whole lot easier the first of these two new localization technologies is a project called Monte it's a codename for a project we've been working on for about a year and a half now and the first version and I'm absolutely thrilled to be able to announce today this project called Monte is actually middleware it's a service data services library which provides a lot of services and various features for you the localization tool developers so the second technology that I want to talk to you today about is a project cause apples large version tree it's a third generation of a tool that has been in existence for some time but this is a complete revolution it's a redesign it's a new modern feel and look and it handles modern data types and techniques and so forth so the complete spectrum of localization tools and if you look at any modern localization process you're going to see tools in many these different types of areas whether it's in release engineering or in the translation and localization process itself and the two technologies that we were going to talk to you today about fall into the area of text extraction and text insertion are probably more accurately localizable data extraction and localizable data insertion so what is Monte well first of all in order to illustrate this what I want to do is explain a an industry-wide problem on the bottom here you can see that we've got some structured data this is any type of data probably packed binary data of some flourish might be an lib file that might be a resource file it could be anything and presumably this structured data contains some localizable information so it's information that you want to get out whether it's strings that you want to extract to try and or whether it's bounding rectangles or whatever that you want to actually localize for a particular product another top what have done is grouped treat different types of localization tools and together such that these are the types of tools that actually typically manipulate those types of data in a localization process and the first and type of tool that we have is there to date editing tools there these are the tools that are like interface builder and residents and resources etc and they typically and need to interface with this structure data in some format okay the second type of two groups of tools that we have are the incremental localization tools and these tools are the the apples lots and so forth to hurt form the core of your localization process and the third type of localization tools that operation on structured data are and are those are those tools which specify localization rules they specified the relationships and the dependencies between different types of data to be localized so across the industry what has typically happened is that and the tools themselves have always operated directly on the data types they've interface directly with that structured data they've had to interpret the format of the data they've had to interpret which elements of that formatted data actually are the localizable ones and have had the responsibility of extracting and inserting that data during any sort of a localization process and this creates a couple of fundamental problems first of all what happens when - data changes you know your engineering department might bring out a new kind of variant of that data type to describe new structures or whatever suddenly the localization - developer has to go off and describe that new format either with a complex template mechanism or revises till his localization - which is typically what he does to handle this that variant of data type and more important what happens is that the data type changes altogether so what you've got is you got for some strange reason maybe it's a engineering department producing a new data type maybe you know it's it's Apple producing new files that may be of interest like help files or something like that or might be the industry actually producing maybe new different types of technology whether it's xml files or HTML HTML files etc so the burden falls on the localization to develop our art of the process developers themselves that actually respond to these new different different data types so what has happened across the industry and I've looked at many different companies and have seen similarities right across the industry here doesn't matter what platform you're working off of the same thing happens the localization tool development department are the process people what they do is they develop new tools to handle these new data types so what happens over a tree or a four or five year period is that you end up with hundreds of different types of tools all fundamentally the same the only thing they're doing is actually extracting and inserting different types of data from different types of data forms so what we've done at Apple is we've recognized that this is a fundamental problem it certainly caused has caused me grief over the last few years as a localization to a development manager so what we've done is sat back from the problem looked at it and said well there must be a simpler way there has to be a more efficient way of doing this and there is and that M project is called Monte so what we've done is we've created this middleware and this is a kind of like a toolbox which the localization tool developers can actually build their tools on top of so what happens is that when a localization to will actually wants a piece of data a piece of localizable data what it does is it asks Monte first Monte then takes the request takes care of any sort of translation of script systems or character formats or whatever it is can interpret the actual structure of the data through a very simple translation mechanism and it's also capable of their identifying which are the localizable elements within that structured data so what it does is it the data in question presents a backup through a common API back up to the localization tools so what you have is you have something that's actually doing all the work for you in the same way when they the localization tool itself does its manipulation of at the higher levels presumably it sends it out for translation the translation comes back in the translations encapsulated and the tool itself makes a basic API call to Monte to read repack that data once it takes to takes that data itself does any necessary encodings and script conversions etc and repacks the data into that triangle structured form you don't need as tool developers you do not need to know what type of data it is Monte takes care of everything for you and why is that important well it's important because the structured data shown at the bottom of this program and again it could be a nib file or resorption doesn't matter what it is that danger can change can change significantly and your localization tools and your process tools and everything else don't have to change a very simple translator which plugs into monte represents new different data types very very simple compared to previous and complex template mechanisms very very simple model it also handles very modern data types and object oriented structures etc so enough about Monte for a second we get into that in more detail in a minute so what is a pelage well a lot of you were going to be fully familiar with apples large apple Tasha's actually was a revelation a revolutionary tool back in 1987 the first version was released and created a complete revolution within the localization industry because what it did for the first time was a created an incremental localization model and what is an incremental localization model well an incremental localization model is not only where a process where it gives you where it can extract the localizable.strings and inserts to translate strings into your objects it is actually a process which allows you to propagate previously translation and localized information from preview the previous builds and for previous releases and typically these are the information wouldn't have changed between bells it also is again capable of extracting and inserting your clays text so what's new about Apple gosh well first thing it's a completely new application it's designed from the ground up using modern development techniques modern architectures etc it's a carbon based application which is going to provide M support for all the modern different data types that you're seeing under 8 9 10 etc the second thing is that it uses Monte for all that is the reasons are just described earlier it doesn't need to know about data formats it basically Monte handles a forest so it's making a very simple API calls to Monte Monte is doing all the work for it so it's the first serious application that's actually using the Monte framework the second thing is that this is actually a flexible framework the application architecture itself is actually a base the roundest essentialized state machine and it's a very modular in design such that you as a localization tool developers can actually create custom plugins into apple blush to customize this operation I mean incremental localization is only one of the things the Apple glut can do you can now customize by developing these plugins to a series of SDKs which you are providing you can actually create these plugins to interface Apple lock into very simple are very complex and localization processes and why is that important well what you want to be able to do is you want to be able to use Apple gosh so she can you know interface possibly with some computer-aided translation machine in a different tack form or a different country or interface with some article database of translations somewhere or whatever and that's what people typically want to do so what we've done is designed it's very modular architecture it provides all the basic functions of glossing but also you have the capability of expanding it it's totally extensible and very very flexible very very flexible very important for a modern localization process but do you know what the most important thing and the most important aspect of these two technologies are I'm going to bring up some my engineers in a second to go true two types of technologies in more detail but the most significant aspect of these two technologies is one we're not going to charge of fifty thousand dollars for these technologies and we're not even going to charge at $6.99 for these technologies right and you definitely don't have to buy a box of cereal to get these to technology because what we're doing is is completely free we're making these available free of charge the SDKs the examples the technologies who are making them available free of charge to developers to do whatever you want to do with them and we have the necessary support to our worldwide developer support services and you'll be able to feedback any comments and suggestions for upgrades in the future so what I want to do is thank you so what I want to do is I want to bring and the chief architect of the Monti project up on stage Krishnan March to go through the finer detail of what Monty is and what is going to do for you thank you [Applause] hello so I'm going to talk to you in a bit more detail about the Monty technology that Colin was given such a excellent sales pitch for so first of all first of all technology first of all what is Monty well Monty is the foundation for the next generation of localization tools inside Apple and we're hoping outside Apple as well it provides data extraction and editing services to any type of tool that wants to use them now this it may not be just in the localization area but also for data editing tools for example so the main features of Monty are first of all the big thing we're going to provide you with a way of developing your applications quicker and that's always good because we put in a lot of effort into getting the data extraction and reinsertion features of Monty working you don't have to so you can just take our work and build upon us and everyone's happy second Unicode support we are fighting support for Unicode in Monty if you've seen any of the other sessions and I hope you have you'll know there's OS 10 is Unicode based the future of the Mac OS is Unicode so we're providing you with a way of editing creating manipulating Unicode based structures third we have support for object-oriented data structures all modern software is object-oriented the data structures the juices are also object-oriented this means we need tools that support them unfortunately the current generation of localization tools don't deal very well with object-oriented data Monte hopefully will change this and most importantly we were insulating your tools from any changes in the format of the data they need to manipulate so so looking at Unicode support of Monty you can see there's in title Monty which is the two boxes in the middle in this diagram you can see that Monty by providing the extraction and recoating services into Unicode text for you insulates your application from the details of what a macintosh roman encoding is or what big five encoding is on the other end so for the tool developer they just replaced the text their sample text with its equivalent in chinese and let monte worry about the recoating and the repacking so if we look at Monty's place in a typical range of localization tools we see this Monty's purpose is to take the original package data structure and it converts us into there's generalized representation which is a tree based representation let the blue box in the middle from there the different classes of tools can either modify or edit or just look at us for example workflow and localization tools our workflow localization tools generally don't need to make any modifications they're just there to count strings layouts and provide some sort of estimates as to how much work is involved in the localization so they will read the data only but because Monte provides all this extraction services they can produce a better estimate of the workload involved in their project localization tools then we'll typically extract some parts of the information either a layout or just simply text send it off to be translated and then reinsert that information again and that's the middle purple box up above and then the last two which are probably the simplest are the data editing tools they just open the structure look through allow the user to make changes and repack the whole thing and when the changes or whatever have been made Monte also provides the features to get our the facility to get from that internal representation back to a packed binary data structure if the same for most of the original data which the tools didn't even need to know about so how Monty gets from a packed binary structure into a generalized representation is by means of what I'm calling it as a disaster it has a translator file oh yeah that's a translator file is an object-oriented data description it's a text-based description of the data but because it's object oriented generally we have very simple translators but we use a lot of them to define structures we do this where we have substructures list items or any kind of common sequence or macro sequence within the data structure we're also using inheritance which means that if you have one data type that is very similar to another but with the addition of a several fields then you can inherit the new type or you can hurt the old type when you create a new type this means to modify your translator to deal with a new type you typically only have to add one or two lines to the data translator now you don't have to edit an 8000 line template file anymore which means which means yeah which means we can finally deal with P pops easily come back to the keyboard so we look at a sample - a translator for a very simple data structure you can see that main points first of all that this structure is a text or the translator is text based now doing this allows us to extend the translator language in the future which was a problem we had with the template mechanism that really wasn't able to be extended very far so if in this particular structure here we have six fields and they're each represented by a line and the translator we've labeled them top left right bottom this could be an item within a graphical user interface at layouts and has some text and has boundary bounding box it's a very simple structure it's probably so simple that you never come across one in real life but it fits on the slide so but most structures are more complicated than this and the first level of complexity away from this is lists of items but in Monte when we define a list we use two at least two translators first of all we define a translator for the list items and then we can include those into the larger enclosing translator which defines the the item the entire structure so for the example here we have a very simple styled text type resource or tiled text list item and this could be for a font menu or it could be for anything that needs to gather a list of style texts and we first create a translator for each individual item and in this case there's an integer font ID and followed by a string with the text of the item then we can include that translator to define each item of a list of the list of items and that's the second translator does and you see the reduces the list commands to include the first translator this way this if the list item changes we don't have to change the simple list translator we just need to redefine the structure of the list and it's the time-saving again especially if those items appear in other types of structures on their own or in different arrangements you change in one place the next problem we have typically is this a list of voya items where all the items are the same is quite rare in even the simplest structure like a digital resource from the classic world we find that there are different types of data and they're identified by one or more key word values so in Monte we refer to these as variant structures and I've shown two very simple variants up above where the type of the structure is decided by the value of the first field now one is an item a textual item the other as a picture item there could be other fields but to define this in Monte we first declare make a translator for the basic type these are the fields that don't change no matter what the format is and in this case there's only one field that doesn't change it's the first item which identifies then having done that we can define variant translators by just saying that this translator is a variant of the basic translator where the type field is equal to 1 2 or anything this Monte uses this information when it's presented with a block of data it uses this so that it can yeah it uses this information to decide which format of the data it has and generate the proper information so no more case statements you're actually dealing with actual structures so I've only shown a single layer Y of level of variance here where we were deriving two variants from a common base but it's possible to derive a variant from a variant from a variant and build up entire frameworks of translators and a very important framework for a lot of you is the power plant one which I'm now going to demonstrate thank you right so I could show you a more complicated translator file and you'll see why it didn't fit on the slide so if we look as we have a basic set of powerplant P pub templates defined using the Monte translator language if just out of interest you see the lot and make use of inserting existing types to the finest for example this L text column class is four lines long it's definition the old template for this class would have been 20 or 30 lines long so by making these translators smaller they're easier to debug you're building on existing work you don't have to try and debug the whole 8000 thing line thing every time so I have an application here that I know has a custom type finish and the custom type is a class with the IDE RCL now the existing templates don't include this but I can just produce a definition by looking at the C typed or talking to the engineer whatever we normally do and adding this new type I know that this type is based on the text column class which I just showed you so I but it has the addition of an icon ID so I've got to add this field here and I'll give it a little label let's leave that off and now I'm going to show you a little tool that we developed pretty quickly just to test the Monti API and to show how really easy it is to produce applications developed are based on this technology this is simple data viewing application and I'm going to use it to open our little power plant application and have a look at the pea pumps inside us in fact there's only one peep up but if we look down the list this first element here is defined as a see error table which was the class that I've just defined with my one line and right at the end these are all the information that came from the original column view and there's the fields that I added the icon now to implement that new type I just had to add one line and create a new translator file because this thing was in a separate file it's easier to version controllers because you're not modifying the same translator over and over again and you can create translator files for particular projects and manage them better but that's about that so come back to the look all right now because it's easy to add new data types we have another problem which is more problem of success than anything else that will sooner or later end up with about three or four hundred different data translators so we're nearly back to the situation we had before where the tool needs to know about every single data type because all of these types have different field names different structures and they're different things that need to be taken out for example the localizable text of a button could be called title whereas the localizable text of a static text item could be called the text the tool would need to know this information well it would if it wasn't for Monty because Monty provides a mechanism of mapping complicated data types into a set of standard properties which tools can then use to extract for example the localizable text so we'll take two structures here where they have very different internal structures bus in both cases there is some element of localizable text but what we can do is we can define a Monte translator that says for structure age the fourth element is the localizable text and for structure beads that are adult now tools can just look for the local text property and say I want that or I want to change that or let me do this and that we've defined several standard properties with Monte for things such as localizable text in bounding rectangles and all suggestions are welcome but the ideas that keep the names consistent so now we can treat very different data types basically using the same tool and now the tool doesn't even need to know what it's dealing with if the tool is lifted away from needing to know about add it'll or a power plant layout and now it just knows I have a layout with text and bounding rectangles so I'm going to show a little demo of using this so I have a very very simple application here and that's what it says hey that took months that did okay so I also have an Apple script and that Apple script is going to interface with an application that we've written that provides an Apple script interface to the Manti library and what it'll do is it'll open that applications little resource which was the source of that message and changed the text of the items and resized the button and I'm just going to run this and it's going to ask me for the application that I wanted to change which is this simple application missus run it's done now I'm going to launch the same application and it's been translated in notice the button has also been resized but this Apple script didn't know anything about the digital format if we look at the script again the brains of this is down here and basically it asks for two properties it asks for the name or it asked for the locale text which is the localizable text of the item and changes it and then it asks for the bounds of the box and changes that the script doesn't know that that was a little it just knew that it was a layout with text and bounding rectangles and this is one of the things you can do with Monte so if you have tools that need to work on layouts then Monty is going to make these a lot easier for you if you have data editing tools Monty is gonna make it a lot easier for you in fact Monty is going to be pretty useful if you're involved in any kind of localization so we hope you're going to use this now then go back to this and one of the applications of Monte which I'm sure you'd be very interested in is Apple droite 3 and to talk to us about this we've got Mike Butler thanks hey you hear me yeah so what is Apple got 3 I'm sure most of you know what Apple ID is so you don't really need me to go through that but just say that Apple got 3 is still a text extraction and insertion tool it still performs incremental localization but as condom said the important thing is that it's completely new we've thrown away all the sources we've start from scratch so all those problems you've had with applet we've had a blank sheet we can start again decided how to do properly so what are the benefits of apple graph 3 well the reason we're all here this week is Mac OS 10 so applet 3 provides my co-host and support but as Colin said Apple got 3 is a user of Monty and Monty hides all that low-level stuff for us now we no longer care about data formats all we need is get Monty to look at our data and decide that's localizable so it could be oh Sh OS 9 r OS 10 all right we also have full Unicode support and as Krishna also said Unicode neatly gets around a lot of the encoding problems that you normally have besides this it's one of the base technologies of our Stan and it's also a base technology of Monty itself we know that and performance is a big issue for a lot of Apple users but if you think about it Apple glad has been around since 87 the files that app about used to process back then were in tens of K hundreds of K now they're in tens of megabytes and up a block just wasn't designed to handle that sort of data so we started scratch so we can we've designed we've used modern technologies like Monte and we've used modern techniques to solve these problems we also know from talking to you that Apple art is not so easy to use so we've designed a modern unison interface and whatever we could make automate of a to take the dredge out of the work we did and whatever we couldn't we made it easy to use but we also made it as safe as possible we have a number of versions of the same file hanging around we want you to make it impossible to choose the wrong version and this is the biggie you made it extensible and we didn't want to be back here in a couple of years going everything's changed again and we needed to do a flick off from scratch so we've made a plot scaleable in the first night case but we've also made it completely modifiable if a new data farmer comes along well Monty you look after that first but if a new process comes along if you want you to do something different well then you can modify Apple like yourselves to do whatever you need to do as common said if you needed to link up with the machine's translator then you can do that yourself so before one you can look at Apple go from two ways you can look at it as just a user I want to use Apple got three just the way I've always used up with let so I just look to some of the you new UI features that were we have an appetite but you can also look at it because it's so flexible you can look at it from a developer it's almost like a framework for localization tools you can decide I want to do something something completely different without a lot you can do it chances are you can do it so we look at that in the second section of the presentation so some of the main features is the UI and we have automatic and intelligent foreign matching if you have a project of say 100 files and you have four very well if you're localizing in under iOS 8 or 9 you'll have four versions of those files hanging around you'll need to match all of them up together to perform incremental localization if you have OS 10 you'll have to match up two versions of each file obviously you just takes quite a while and so Africa 3 provides a couple of different mechanisms first it will provide automatic and matching if I can where can't it will try to intelligently match the files and we really can't match any of the files at all it'll let you do it but first it makes it easy and second it just won't let you or we'll try not to let you choose the wrong version it should make it a lot more safe again if you have large project say for example the system folder you're not going to work with all of those files that won't go you really only generally going to work with a small section of them so again if you had a system full you might only work with the control panel so you might only work with the extensions so we've introduced the concept of file groups and this just lets you group your files together you can look at all your files as normal under a cloud 3 or you can decide I just want to look at the way one of my groups so I only want to look at saving my control panels or I only want to look at my extensions so file groups allow us to do this we wanted to make the UI itself extendable so we've added script support and you can run scripts yourself so you can choose a number of files inside applet and run a script under those files or you can run them on all the files in the new lock or whatever you want to do you also added external school support so if you want to view files in external tools interface builder or resource or whatever and you can just choose it very easily with about 3 and 2 sports some of the stuff we've extended the environment we have a couple of new folders in there to handle say plugins and scripts that I've talked about but we've also given it a distinctive icon to make it easier to recognize and we've made the folder itself intelligent so you know if you drop and support files on the folder the environment folder they'll automatically get put in the correct subfolder so if you have it's like the system folder again if you're dropping on control panels on to the system folder they go into the control panel folder you drop a plug-in on the environment it'll go into the plugins folder so I have a tool here then which we use to test Apple ID itself but it contains some of the features that I've just described and may make it more clear so I'm just going to choose a small environment here in this window would look pretty similar to what you normally see what up a glutton huh oh sorry can you switch screens okay so I've just opened actually I'm drawing the grammar there they'd open up a small environment first okay this looks pretty much like your old epic lot and we have our four columns representing the four files that we need to perform incremental localization under OS 9 and as you can see epic lot hasn't been able to match some of the files and it's done one of them but we need to do match some of the others ourselves now if this is applicable that we'd like you'd have to go off into another file all your files would be sorted in a different order and you'd have to use standard file dialog to choose whichever file with applica lot 3 we have Excel contextual menus so you can simply go down and choose a file but you're only presented with the appropriate files you're not given a lot of the files there you just did the two that in this case are available in the new lock folder so I can simply just choose the appropriate file now you can see that it's been able to make an intelligent guess at the old lock version but this also fills out some more information so it's being able to guess at all the other ones as well so it's not a little bit of automatic matching for you but you've done some of it as well so just take a look at a slightly larger environment go to the demo okay it's probably a bit more normal you have a whole load of files and there's a lot of information here so as I said we have file groups and this is an environment I've used before so I've set up a couple of groups myself I have a control panels group an extension group so I jump it simply just select one and then I only have those three files I can work away on those I can process them as I want all right I switch over to my extension files do the same and when I want to batch all of them together I can simply show all of the files and do whatever I need to do but we've matched all the files here so there's a whole lot of information here to be don't need we don't need all these the tree columns on the right so we can shrink it down to just show one column as my hair dry students that is my hair dry but it's not that slow don't worry ha okay well it was a test - it's not a real application anyway what would have happened there was that you just see the one column you could resize it as and all you'd have is your one set of files so I just go back now to the slides so as I said the the UI is not the big part of cupola 3 it's the architecture what that allows you to do so if we'll just take a few look at that now and Monty as I said we use Monty so that takes away a lot of the icky low-level stuff first that leaves a bug light itself being much simpler and much cleaner so and that leaves with a plot being say a set of managers that provide services and just the state machine the managers provide services like managing the environment for you they manage plugins they manage the errors and lugs and stuff like that but the power comes from being able to write your own plugins you can write a plug-in that will change the way the managers work so you can read plugin that would chase a change the way the glossary manager works so instead of coming back with just one translation it would come back would say maybe flavor the closest matches are go off to a machine translator and pull back and translation from that similarly the state machine processes the files for you but you can write plug-ins that would fit into the state machines so you can change the way the state machine works so you can if you want to handle the particular data format a different way yourself you can do that just by overwriting the normal default behavior of the plugins now there's no UI shown here it's completely separate it's just a user of a padlock there's just a user of the services so you can write your own UI or whatever you want to put on top to control it the way that we provide well that also has plugins so they just let you alter your own plug-in behavior or let the user alter your own plug-in behavior without you having to write user interface code yourself so just to look that in slightly more detail we have the state machine of the managers which make up Apple ID itself then we have the plugins that the state machine uses to alter the behavior of the a machine now how it processes files and we can also see here of our Monty fitting Monty fits in under under the plugins so if your plugin if you don't want to use Monty as your your based technology you can go do whatever you want but obviously we believe Monty is the best thing to do the managers manage the environment for you and you can write plugins that will change the way the manager works anyway just sits on top of it all and you can write any other entry you as you want so you can write a command line interface package the whole of upper glut up and use it as part of the build system or you can package it up with Apple events and just use it completely from scripts if you want so just go through some of the services we provide we have environment services that I mentioned these just manage files they do the matching of the files for you if you want we have glossary services and these look after the internal glossary so they look good look after and we're looking up translations or and start asking for translations like that we have logging services which just log errors and warnings and our ever notes you want to log we have plug-in services now you would normally use these up you like himself uses be used to manage all the plugins but if you needed to control the plugins yourself you could do that and finally we have state machine services so this just lets you control the state machine start it off stop it and get information from it so to think machine itself and a bit like the passes you have in the current a burglar and it has three modes of execution we have extraction where you would run to the state machine just to extract data we have insertion where it just runs two distinct machine to insert data and we have a final mode which Appa got three itself doesn't use but it's there after any plugin who ever knew anybody who wants to write a plugin he could maybe do verification our tidy up or do whatever you need to do after the file has been created so state machine itself is just like any state machine it runs through a series of states it completes everything it needs to complete in one state before moving on to the next the states are came they're separated out in three we have pre processing the states and these are called before any processing is done obviously and so you'll be called say before if I let has opened be processed you would be called before a clicker datatype is processed or it would be called before the individual piece of data is processed we have the data processing state itself where your data extractor and start data and we have the post processing states and these states just give you a chance to clean up so after the data type state you can maybe get rid of the translators or the templates which are and after the file state then you may be close to file or do whatever you need to do to tidy up after proceeding left where the states themselves don't contain any logic all they do is they correlate to all of the plugins register to be executed in that state and they execute those data plugins in order before moving on to the next stage where they will execute all the plugins that are registered to execute in that state and I will keep going on as it moves through all the different states in the state machine so two plugins themselves a padlock comes with a set of default plugins and these implement the normal behaviors that you expect up a lot to do and but because we have these as plugins you can just very subtly override what it does by providing your own plug-in that does something but doesn't do affect any of the other behaviors or you can ditch them all together and do whatever you need to do yourself one single plug-in can act as a number of different plugins so you have one plugin that may be a state machine plugin or maybe a preference panel plugin and it's nice for packaging up your plugins if you want to send it out or it's also handy for passing information between plugins so two types of plugins we have as I said we have service plugins so glossary plugins again you're managing your glossary so you can change the way the glossary lookups are done an example of that as I said was fuzzy matching our machine translation weave glossary file plugins this just manages the way the glossary is written to disk so if you don't like the way up a lot writes what the glossary chat is you can maybe write it as an XML file our record in some form that some other process needs to use we have log exporters so if you like writing a log exporter plug-in if you want your errors and warnings to go through the screen so the user can do something straight away but you can do that or you can even go out to the files normal we have state machine plugins and as I said they altered the way the state machine behaves and we're gonna treat that we have preference plugins and these just let you give the user a user interface to choose what it wants to do with your plugins without you having to race the interface yourself so the things to take away from Apple grab three apricot three works simply and efficiently with Mac OS 8 9 and 10 Apple R 3 can be customized to fit your own requirements so you get a plot to do what you want to do you don't have to fit in with the way Apple art works and I put about three well the UI has evolved but we believe that the potential with the architecture means that it's a revolution and we believe it is as revolutionary as the original glad itself so I just like to welcome coming back onstage to run through the more information and to get the questions answered started thank you okay thank you so and I hope - and these two technologies that we're making available - you're actually going to be useful within your processes I know that's certainly going to be useful internally in Apple I mean our own localization processes so and you know there's certainly plenty of information we could go into an awful lot of depth here I don't think it'd be a value of this stage but and these are fairly complex and applications and tools here and but we've provided very very simple interfaces for you as the user of these and technologies and so what we want to do is we're going to make available and quite extensive examples application sample applications and UI documentation SDKs etc and we're going to make these available to you troodon the normal wwm DRM websites and we also have a contact manager as well for who's going to basically handle all questions and comments and suggestions which you may have and I actively encourage all you users of these particular technologies to you know send your feedback send your comments to us and we'll certainly respond to them it's only by you know and getting us the information and the suggestions that were actually going to make these and evolve these into even even better tools and technologies so and what I want to do is just give you an idea of where these are in the development cycle first of all Monte is almost GM in the next couple of weeks you're going to see this information become available on DM developer.apple.com websites and the information we provided up there we packaged in the format that you require the Apple's framework itself were actually currently just finalizing the internal architecture at the moment so in the next and monitor so you're going to start see the first am alpha and beta applications up there and they actively again encourage you to take those applications use them for you know whatever you want sample projects are live projects give us the feedback because and this we we have a fairly aggressive GM target dish and in a couple of months time and we certainly want to incorporate as much features from you from you guys as possible and we also actively encourage you to start with the D SDKs look at how you can actually customize the operation of particularly apple collage and how you can get that working more effectively and efficiently in your process so what I'd like to do is just point you at a related session and immediately following this session we've got a Mac os10 localization session session one57 following in this hole and encourage you to attend that session also there's some very valuable information to be learned about what you need to do to localize retain and and do same that session is going to run for approximately an hour and a half also so what I want to do now is actually I know a number of you have have questions so I'd like to encourage it you
