I recently had the opportunity to re-design Best Buy’s corporate site (www.bestbuyinc.com), and as part of that effort, I encountered a problem I had not worked through before — different languages in Flash. I learned a great deal about dealing with different languages and for the most part, it was not as complicated as I expected (and feared it) to be — that is, until I needed to include Mandarin Chinese in the mix.
The Flash pieces needed to be flexible enough to add languages in the future, and yet fit within the corporate guidelines for Best Buy, which meant using Futura Bold for the headlines. This wasn’t a problem for most languages since most of the ones we needed use the basic Latin character set. All I needed to do was have a dynamic text field with Futura Bold embedded along with the following characters:
That list can be found at thewarp.org and it covers Portugese, Spanish, German, French and Italian.
The tricky part came when I had to add Mandarin Chinese. The problem here lies in the fact that there are way too many glyphs to embed an asian font, so I had to do some research on how device fonts work for Asian characters. But since this dynamic text field already had a font associated with it (and it was already embedded), how do you use a device font instead?
Well, I don’t know if this is the right way to do it, but it works. First, I set up all language translations in an XML file. When I load the XML file, it looks for the specific language to be displayed using the two letter code for each country (i.e. FR = France, CA = Canada, CN = China, etc).
Next I set up a conditional to figure out what language to load, and if it found CN (China), it would set the text field to embedFonts = false and assigns it a TextFormat with a device font instead. To my astonishment (and great relief), this worked like a charm. Granted, it doesn’t give me much control over the visual aspect of the Mandarin glyphs (it uses whatever the computer defaults to), but I felt that was a good compromise to having one Flash file per language instead.