Detect OS language?
BlitzMax Forums/BlitzMax Programming/Detect OS language?
| ||
I know this works on windows to get the LID (Language ID) of the OS:Extern "win32" Function GetUserDefaultLangID%() End Extern Local lang% = GetUserDefaultLangID() Question is: how can this be achieved on Linux and Mac? (I can test it on Linux, but not on Mac unfortunately) Have anyone tryed this yet? Searching the forum I only see one mention to wxmax - but I would like to avoid any unecessary overhead for this if possible... |
| ||
This should work on Linux:
Global lang:String
Local tempLang:String
tempLang = getenv_("LANGUAGE")
If tempLang="" Then tempLang = getenv_("LC_ALL")
If tempLang="" Then tempLang = getenv_("LC_MESSAGES")
If tempLang="" Then tempLang = getenv_("LANG")
If tempLang="" Then tempLang = "en"
tempLang=Lower(tempLang)
If Instr(tempLang, "en") Then lang="en" ' english
If Instr(tempLang, "ru") Then lang="ru" ' russian
If Instr(tempLang, "zh") Then lang="zh" ' chinese
If Instr(tempLang, "de") Then lang="de" ' german
If Instr(tempLang, "fr") Then lang="fr" ' french
If Instr(tempLang, "it") Then lang="it" ' italian
If Instr(tempLang, "ja") Then lang="ja" ' japanese
If Instr(tempLang, "pt") Then lang="pt" ' portuguese
If Instr(tempLang, "sp") Then lang="sp" ' spanish
If Instr(tempLang, "es") Then lang="sp" ' spanish
If Instr(tempLang, "nl") Then lang="nl" ' dutch
' nothing found, defaults to english
If lang="" Then lang="en"
print "Detected language: " + lang
At least on Ubuntu it worked. Should detect english, russian, chinese, german, french, italian, japanese, portuguese and spanish - or if none detected, default to english. Can anyone test it on a Mac and see if it works there too? Would be nice if anyone with Linux - other than Ubuntu 8, in English - could test this to see if it's actually recognizing the languages correctly. Last edited 2010 Last edited 2010 Last edited 2010 |
| ||
| It works on Snow Leopard. |
| ||
| spanish sometimes is identified as "es" instead of "sp". Just in case... |
| ||
| ah, maybe thats why on ubuntu 10.04 live cd, it didnt detected spanish! have to recompile to es and try it out... btw: it did work for english and portuguese! update2: now it works also for spanish (thanks ziggy!) and successfully tested french on Ubuntu 10.04.01 @Galaxy613: thanks for testing on Mac! Glad to know it works :) Last edited 2010 |
| ||
| Thanks! The only thing is that Windows report a numeric ID (ie: 1039) while Linux report in plain text... A 'mod' with this 'extra-OS' command (like default user, documents/system folder etc) will be interesting. ps: I will use a Map to determine the language, it *should* be faster and better manageable I think. |
| ||
| Good, so when I get the id language on Window how I can know what language it is? Last edited 2010 |
| ||
| Google for GetUserDefaultLangID. On the Microsoft page about it, there's a link to all possible values. I just don't post a direct link, because it's MS site... links always change, and a month from now, it will be a 404 :P~ |
| ||
| It works on Snow Leopard. Nope. On Mac OS X, the system language is stored differently and checking the LANGUAGE environment variable would generally turn up empty. I'm not sure if there is an easier way to get the current system language, but it appears that you might have to implement some Cocoa calls. |
| ||
| thanks slotman I look for it. if any one make the proper code to detect the os language on mac os and can put it I will be very grateful. thanks. |
| ||
| if any one make the proper code to detect the os language on mac os and can put it I will be very grateful. Yeah, me too. Altough I don't have a Mac to test it, would be nice to have the code 'ready' for this :/ |