[sl-ux] RX Office hours - Open Discussion

Michael Albers (MAlbers) malbers at lindenlab.com
Thu Jul 31 12:30:52 PDT 2008

Howdy All,

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  
or both.
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- 

Malbers Linden

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:
> https://lists.secondlife.com/cgi-bin/mailman/listinfo/sl-ux

More information about the SL-UX mailing list