2013年3月22日 星期五

IOS和Android上取得系統語言

IOS和Android平台,可以利用PhoneGap(2.2版以上)所提供的API來獲取當前系統語言,簡易步驟如下:

1. 設置 device ready事件:

1
2
3
4
5
6
7
8
// 初始化動作,啓動程式時呼叫
function init()
{
    if ( ON_DEVICE )
    {
        document.addEventListener( "deviceready", onDeviceReady, false );
    }
}


2. 定義device ready事件發生時所呼叫的function:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
var gLocaleName; // 取得的區域名稱

function onDeviceReady()
{
    // 因為Windows Phone 7不支援此API,所以做個區隔
    if ( gDeviceName == ANDROID || gDeviceName == IOS )
    {
        navigator.globalization.getLocaleName(
            function ( locale ) { gLocaleName = locale.value; },
            function () { alert( "Error getting locale\n" ); }
        );
 
        setDefaultLanguage( gLocaleName ); // 以區域名稱來設置語言
    }
}


3. 定義設置語言的function:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// 設置預設語言
function setDefaultLanguage( language )
{
    if ( ON_DEVICE ) // 實機
    {
        if ( language.toUpperCase().match( "TW" ) ||
             language.toUpperCase().match( "HK" ) ) 
        {
            gLanguageIndex = ZH; // 繁體中文
        }
        else if ( language.toUpperCase().match( "CN" ) )
        {
            gLanguageIndex = CN; // 簡體中文
        }
        else if ( language.toUpperCase().match( "EN" ) )
        {
            gLanguageIndex = EN; // 英文
        }
        else if ( language.toUpperCase().match( "JA" ) )
        {
            gLanguageIndex = JA; // 日文
        }
        else if ( language.toUpperCase().match( "KO" ) )
        {
            gLanguageIndex = KO; // 韓文
        }
        else
        {
            gLanguageIndex = EN; // 實機的預設語言
        }
    }
    else // 非實機
    {
        gLanguageIndex = TW; // 非實機的預設語言
    }
}


4. 每次啓動可取得當前語言gLanguageIndex,再隨之做調整即可。

沒有留言:

張貼留言