MEETING KAI "HELIOS" STEINMANN - DESIGNER

Team Comment - Helios Explains Localization - October 19, 2001
lo•cal•ize
v. lo•cal•ized, lo•cal•iz•ing, lo•cal•iz•es
v. tr.
1. To make local:
2. To confine or restrict to a particular locality
3. To attribute to a particular locality

v. intr.
To become local, especially to become fixed in one area or part. n.

Source: The American Heritage® Dictionary of the English Language, Fourth Edition Copyright © 2000 by Houghton Mifflin Company. Published by Houghton Mifflin Company. All rights reserved

---

lo'cal•i•za'tion n.

—The Dark Art of transforming text into the native language of the end user.


Greetings once more fellow UO gamers! I’d like to take a moment to talk about the secret doctrine of localization, the power of words, and French bread. Well, okay — I won’t be talking about French bread.

What is localization? Why localize?

Having been recently declared the keeper of words, I will explain all of this and everything else you have ever wanted to know. Well, okay — I won’t be explaining everything you ever wanted to know — but I will try to explain localization. :)

We have all seen the following line of text in the game: gold coin : 500
It used to say, “500 gold coins.” Why the change?

To answer that question, we must consider the purpose of localization. Localization is the process of allowing text to be displayed in various languages, based on the settings of the end user machine. If your game is intended to be played by only one group, all speaking the same language, then you can just display everything in that language. However, if you have people from multiple countries playing your game (like UO, for instance), the need for translation and a unified way for displaying text becomes apparent.

In a traditional line of code we could say, for instance…

     print(“Hello, how are you today?”)

Which would print the phrase, “Hello, how are you today,” on the screen for our user. That’s wonderful…for English-speaking users. For someone who speaks exclusively German, for instance, that would be extremely useless. So, we know now that we have to translate the sentence. In German, the sentence would look something like this:

     print(“Hallo, wie geht es Ihnen?”)

This literally translates to “Hello, how goes it you (in a formal sense)?” As you can see, the rules of grammar are noticeably different for these two languages.

These differences in grammar do not necessarily pose difficulty for us at this point, since we can simply translate the entire statement, and the meaning of the phrase will still map over quite nicely.

The problem occurs when we start printing dynamic text groups (or strings) on the screen. A typical statement to print a piece of dynamic text could look something like this:

     print(“you have $amount gold coins”)

Before displaying this string to the user, the part that says “$amount” would be replaced (by the computer) with the amount of gold the user has. If they have 5000 gold, the string would show as:

“You have 5000 gold coins.”

For someone that had 700 gold coins, the string would display as:

“You have 700 gold coins.”

That works great – for English. In another language, a language that doesn’t share the same language sentence structure, this particular arrangement of words would probably not work very well. So, now we have to come up with a generic way to create dynamic strings that work for all languages.

The only structure that innately works for all languages is the following:

“Static Text” : “Dynamic Text” or, alternatively “Dynamic Text” : “Static Text”.

The dynamic portion can never be anything other than proper nouns or numbers. Consequently, we come up with constructs that look like “gold coins : 500”, or “Bandages : 24”.

This is obviously a technological limitation, which we have been able to overcome, thanks to our programmers. We now have the ability to create localized text that allows our translators to arrange the various dynamic parts of a string to conform with local rules of grammar. As a result, we are now able to display fairly dynamic strings in all languages, without having to sacrifice game ambience for interoperability.

The most recent change that you may have noticed on the Test Centers is the change to corpses. No longer will you see “remains : Vexx,” but instead, you should see “the remains of Vexx.” :) Great stuff.

The recent localization efforts have been engineered with the latest technology advancements, so that many of you have not even noticed the most recent rounds of localization. Check out the fully localized version of Animal Lore on the Test Centers to see what I mean.

Well there you have it, and well…there it is.

Have fun and take care!

Helios
Keeper of Words
Designer, Ultima Online

Team Comment - Introducing Helios - August 27, 2001
Hi. I'm Helios. Well, my name in the real world (whenever I get a chance to go there) is Kai Steinmann. I started playing UO about three years ago and never stopped. So what's with the name? Helios was one of the Titans in Greek Mythology. I'm a pretty big guy, so I figured it fit me pretty well. Plus, I really like the Titans on Titan Island. :-) Ah yes... the Titans... (insert memories of provoking and running from Titans for hours on end here).

While I used to put in 40 hours a week of gaming, these days I focus on helping to improve upon a world that we all enjoy. I do still play UO every day, just not for eight hours like I used to. :-) Being in game is an excellent way to get feedback from players that don't visit the boards. I think player feedback is one of the best things a game development team can have as one of their tools for progressing a game in the right direction.

I started with Origin as a Game Master and eventually moved into Design, which is what I'm doing now. That gives me the unique advantage of seeing our game from many angles: as a player, a support representative, and now as a member of the Development team.

I spend a lot of time on the boards reading suggestions, complaints, and compliments players leave for the Dev team. I know that at times it seems your words fall on deaf ears, but be assured that all of us read the boards A LOT. We may not be able to answer every person that writes a note, but more than likely someone will read it. So, I'd like to take this opportunity to encourage everyone to register on our boards (http://boards.uo.com) and speak up about what's on your mind. Tell us why you want something, and how it would improve the game for you. Keep the feedback coming. :-)

What am I working on these days? Recently, I have been working on a wide range of localization changes as well as some ideas for animal lore (which you guys liked for the most part - woohoo!). We're always trying our best to improve the localization process to be as unobtrusive to the game's ambiance as possible. There’s always room for more improvement, but at this point, some of the localization changes we’re making now are so transparent that you can't even distinguish them in game. You’ve got to love those programmer types.

So I suppose that's it for me this time around. Don't be a stranger and drop me a note sometime. It's always nice to hear from everyone. I look forward to meeting many of you at the Fan Fest this year.

'Til then.
Cheers!

- Kai "Helios" Steinmann
- Designer, Ultima Online Live