2013-01-23 18 views
1

在Android中獲取字符串是根據用戶選擇爲設備設置哪種語言環境自動完成的。但是,有時用戶可能希望跨應用程序使語言環境不同(例如,法語爲程序A,英語爲程序B)。如何使用特定的區域設置?

我有使用特定的語言環境有關的一些問題:

  1. 是否有可能運行一個外部應用程序,並告訴它當前區域是X(或使用特定的語言環境)?如果是這樣,怎麼樣?

  2. 是否可以運行當前的應用程序,並告訴它當前區域是X? 如果是這樣,怎麼樣?

  3. 是否有可能得到當前的應用程序(使用的getString,例如)的字符串,使用特定的語言環境X?如果是這樣,怎麼樣?

回答

0

這是可能的,但你是反對android系統。

您可以設置語言爲每項活動有類似的東西:

Resources res = context.getResources(); 
    // Change locale settings in the app. 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    android.content.res.Configuration conf = res.getConfiguration(); 
    conf.locale = new Locale(language_code.toLowerCase()); 
    res.updateConfiguration(conf, dm); 

你可以找到另一種方式來更改配置here

+0

是什麼代碼呢?我回答了哪些問題?其餘的都不可能?此外,如果用戶選擇這種方式,它怎麼可能違背android系統呢?例如,我希望我的新聞應用程序用希伯來語編寫,但其餘的應用程序用英語編寫。我沒有看到任何問題。 –

+0

對不起,我很快回復。如果當前應用意味着您正在編碼的應用,則我回答2。此代碼更改您的活動的Android資源配置。有了它,用戶可以爲應用程序本身選擇幾種語言。這種方法違背了android系統,因爲android並沒有給出改變語言環境的方法,它只是你必須應用在每個活動上的技巧。所以我覺得1是不可能的,我真的不知道3. – Goo

+0

爲1,的確,這似乎是不可能的:http://stackoverflow.com/a/3012059/1720391, – Goo

0

對於問題2,3:我用下面的(例如:我的設備的默認語言環境設置爲日本,但我的應用程序將在美國的語言環境中啓動):

擴展了應用程序類,名爲MyApp cla SS,並在onCreate方法,添加以下代碼片段:

public static Configuration mConfig; 

public void onCreate() { 
    super.onCreate(); 
    ... 
    mConfig = getResources().getConfiguration(); 
    mConfig.locale = new Locale(user_locale); // user_locale is your self-defined locale 
    getResources().updateConfiguration(mConfig, null); 
} 

此外,你有你的清單文件來定義這一點,主要活動部分:

android:configChanges="locale" 

通過這種方式,我可以在問題2和3中做你想做的事。注意,當你想要(或者你確實是這樣)將語言環境改爲另一個時,你必須重新啓動你的應用程序。

希望有所幫助。

+0

這實際上聽起來更像是單獨回答#2,因爲我無法獲得超過1個語言環境的字符串,只能使用當前正在使用的字符串。 –

相關問題