Determine active OS langguage
Trevor DeVore
lists at mangomultimedia.com
Thu Oct 6 12:26:44 EDT 2005
On Oct 6, 2005, at 12:30 AM, graham samuel wrote:
> More significantly the 'queryregistry' call doesn't happen in your
> script because it would only be called if the platform **wasn't**
> Win32, which it is! I altered the logic a bit so that the registery
> is queried for the Win32 case, and bingo! I got 'fr'. So the key
> idea works. Don't know what the replaceText problem is.
Doh, I was testing something right before uploading the stack and
forgot to switch the script back so it was testing the platforms
correctly. Sorry about that. I'm glad to hear it did work once you
switched it yet. I had entered the incorrect codes for German and
Italian in the script I posted so I've updated the stack in my user
space (trevordevore). Here is the latest function for anyone who
cares. I added a couple of extra languages to it as well.
--
Trevor DeVore
Blue Mango Multimedia
trevor at mangomultimedia.com
/**
* Returns the two letter language code that a program can use to load
a language file.
*
* @return 2 letter lang
*/
function getUserLang
local tAppLangs = "en,fr,de,es,it,pt,zh,zh,ja,ko"
-->
English,French,German,Spanish,Italian,Portuguese,Chinese,Chinese,Japanes
e,Korean
--> CHINESE APPEARS TWICE FOR SIMPLIFIED AND TRADITIONAL (MAC OS X)
--> zh-Hans = simplified chinese
--> zh-Hant = traditinoal chinese
local tUserLangs,tLangs
local i
set wholeMatches to true
if platform() is "MacOS" then
put "en,fr,de,es,it,pt,zh-Hans,zh-Hant,ja,ko" into tLangs
get "(\s|\(|\)|""e&")"
put replaceText(shell("defaults read NSGlobalDomain
AppleLanguages"),it,"") into tUserLangs
else if platform() is "Win32" then
put "9,12,7,10,16,22,4,4,17,18" into tLangs
put queryRegistry("HKEY_CURRENT_USER\Control Panel
\International\Locale") into tUserLangs
put baseConvert(tUserLangs,16,10) bitAND 1023 into tUserLangs
--> LINUX
else
end if
repeat for each item tLang in tUserLangs
put itemOffset(tLang, tLangs) into i
if i > 0 then exit repeat
end repeat
if i > 0 then return item i of tAppLangs
else return "en"
end getUserLang
More information about the use-livecode
mailing list