2014-01-24 55 views
3

我有一個Samsung galaxy y duos和一個Google Nexus 5。我的應用程序在兩部手機上都運行。我必須以兩種語言提供這個應用程序(卡納達&英文)。我通過切換語言環境來選擇語言(按照慣例)。Android:在沒有「kn」語言環境的手機中顯示卡納達語言

Nexus 5在其語言環境列表中具有區域設置「kn」,而Y Duos在其中沒有「kn」。但是,當我試圖在values-kn文件夾內使用String.xml時,即使它在其中沒有「kn」語言環境,Kannada文本也能在Y Duos中正確渲染。

我有一段代碼,它尋找「kn」語言環境並啓用/禁用卡納達語言功能。它在下面給出。

public boolean isLocalePresent(Locale newLocale) { 
    Locale[] locales = Locale.getAvailableLocales(); 
    for (Locale locale : locales) { 
     if (locale.getLanguage().equals(newLocale.getLanguage()) { 
      return true; 
     } 
    } 
    return false; 
} 

我這樣稱呼它:

if (isLocalePresent(new Locale("kn"))) { 
    // change default locale to "kn" 
} 

任何人都可以請告訴我如何讓我的應用程序在所有可以呈現卡納達文本的手機中使用卡納達文本。我如何知道手機是否支持Kannada文本渲染,即使「區域設置」列表中不存在「kn」區域設置。

+0

嗨,你是否能夠把卡納達作爲區域設置?我正在努力解決同樣的問題..你能幫忙嗎? – karthi

+0

語言環境在所有電話上都不可用。但是,您可以創建一個語言爲「kn」的新語言環境,並將其設置爲應用中的默認語言環境。問題依然存在。我沒有得到一個適當的解決方案哥們。 –

回答

0

我有同樣的問題。嘗試了一些選項,並在我的應用程序下面的代碼

public class MyApplication extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     setLocale(new Locale("kn")); 
    } 

    public void setLocale(Locale newLocale) { 
     Locale.setDefault(newLocale); 
     android.content.res.Configuration config = new android.content.res.Configuration(); 
     config.locale = newLocale; 
     getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); 
    } 
} 

事情按預期工作。