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