[sl-ux] RX Office hours - Open Discussion
Michael Albers (MAlbers)
malbers at lindenlab.com
Thu Jul 31 12:30:52 PDT 2008
These two topics tend to be related from a UI perspective --
Internationalization and Flexible Layout.
Internationalization is the process of preparing software to be
displayed in different languages and with different cultural
conventions. The first paragraph of http://en.wikipedia.org/wiki/Internationalization
is quite lovely. In general, Internationalization (I18N) is the
plumbing piece or being able to Localize. Localization (L10N) is the
process of providing language and culturally specific information to
be displayed. Kinda splitting hairs here -- but it is usually because
different teams would do I18N and L10N.
If there are "hardcoded strings" directly in the source code (say C++)
your options for internationalization are rather limited since you
have to recompile the code to, say, change the shown text or add a
completely new hunk of language/culture-specific data (a "locale").
It is common to split this locale out into a specific file -- say,
something like "SL_minimap.xml" (yeah, I made that up). You could then
have things like "SL_minimap_en.xml" for English or
"SL_minimap_jp.xml" for Japanese or "SL_minimap_kl.xml" for Klingon
(only half joking; although I'd expect to see a LolCat localization
No, don't nitpick my filenames. The point is you get to have different
files for different locales. These can be provided without having to
recompile code. But, going back to "hardcoded strings", the strings
(and possibly other stuff) lives in these external files instead of in
the C++ code. It's just a more flexible arrangement.
Flexible Layout is a (philosophically) similar situation.
If you want to put a couple buttons next to each other. You know, "OK"
and "Cancel". No problem. You "hardcode" the X,Y location of the
(upper left corner of the) buttons and everything looks good. Well, it
looks good in English. When "OK" and "Cancel" are magically swapped
out for Japanese kanji glyphs or the (usually 30% longer) German
words, those buttons are gonna be in the wrong place or the wrong size
A constraint-based system (for example) can be used to tell buttons to
stretch to the "right" size for their contents. Further, the "Cancel"
button can be told to always be (say) 3 pixels to the "trailing edge"
of the "OK" button.
You could also put the new X,Y coordinates into the locale itself
(which I wouldn't suggest but is possible).
So, there's the crash course on these two topics. I can explain more.
In fact, waaaaaaaaayyy more as I've spent years of my UI career
agonizing over both of the issues from a platform/widget/toolkit point-
On Jul 31, 2008, at 11:55 AM, Geneko Nemeth wrote:
> Ugh... first time using a mailing list, I'm not sure if I'm doing
> this right... a test post, perhaps?
> So "hardcoded" means, these strings are embedded in the source code,
> and cannot be changed save for a recompile. Which isn't something
> everyone wants to do.
> For example, the Set (Not) Away / Set (Not) Busy on the World menu
> is hard coded in the source code and untranslatable.
> Also the messages on the login screen (like "Downloading
> Clothing...") used to be one of them, but has moved out to
> strings.xml long ago. I believe there's an regression here, since
> one message in particular, "Loading World..." (previously
> "Precaching...") doesn't seem to be translatable.
> I'm not sure what "position independent template formating" means,
> but it sounds like they are going to add line-break functionality to
> long texts...?
> Geneko N. / Kakurady D.
>> For someone who doesn't know XML from GUI, can someone explain the
>> relevance of: "hardcoded strings out of the viewer" and "position
>> independent template formating".
> Click here to unsubscribe or manage your list subscription:
More information about the SL-UX