2007年1月17日星期三

3.4.检测系统语言


3.4. 检测系统语言

问题
我想知道客户端系统使用什么语言和输入法
解决办法
使用 flash.system.Capabilities.language 属性和 flash.system.IME
讨论

flash.system.Capabilities.language 属性给出客户端系统的语言,返回两个 ISO-639-1 字符(如 "fr" 代表 French). 有些国家代码两个字符是不合适的,比如( "zh-CN" 代表 Simplified Chinese 和 "zh-TW" 代表 Traditional Chinese).


下面的代码展示如何使用语言属性:
// Example output: en-US
trace(flash.system.Capabilities.language);
var greetings:Array = new Array( );
greetings["en"] = "Hello";
greetings["es"] = "Hola";
greetings["fr"] = "Bonjour";
var lang:String = flash.system.Capabilities.language.substr(0, 2);
if (greetings[lang] == undefined) {
lang = "en";
}
trace(greetings[lang]);
如果要创建国际化的Flash,可以把文本保存在数组里,根据语言动态显示,或者直接做成多个Flash版本(每个语言一个),如 myMovie_en.swf, myMovie_es.swf, myMovie_fr.swf, 等.
//从 capabilities 对象上得到语言值
var lang:String = System.capabilities.language.substr(0, 2);
// 创建支持语言数组
var supportedLanguages:Array = ["en", "es", "fr"];
// 设置默认语言.
var useLang:String = "en";

//循环匹配,如果找到,设置 useLang
for (var i:int = 0; i < supportedLanguages.length; i++) {
if (supportedLanguages[i] == lang) {
useLang = lang;
break;
}
}

// 载入对应Flash
var movieURL:String = "myMovie_" + useLang + ".swf");
还有一点也很重要,比如用户使用的输入语言,比如中文,日文,韩文,输入这些字符需要输入法,这时特定操作系统的一部分。
flash.system.Capabilities.hasIME 返回用户是否使用输入法. flash.system.IME 类返回关于输入法的信息。flash.system.IME.enabled 属性设置用户是否可以使用输入法。在有些操作系统和版本上你可以发送字符串给IME来转换成正确的字符,接受IME的返回,但这不是所有操作系统都支持的,最好检测下先。


没有评论: