2013-09-05 60 views
5

對於例如有應用程序,它提供了多語言支持,在我的活動/ UI,我叫getResources().getString(R.string.hello)存在於strings.xml中,這樣getResources如何()的getString()的作品的Android

values\strings.xml 
values-ru\strings.xml 

現在,當調用getResources().getString(R.string.hello)並需要訪問基於系統區域設置的字符串時,那麼將從values\strings.xmlvalues-ru\strings.xml獲得字符串?

OR

確實一個需要從getString()基於系統語言環境更改我的應用程序的語言環境(Keep應用的語言環境相同的系統區域設置),然後檢索值,東西在下面推薦鏈接

  1. get-string-from-default-locale-using-string-in-specific-locale

  2. how-to-get-string-from-different-locales-in-android

我已經搜索了各種其他的鏈接,但無法找到解決方案

+0

基於系統區域設置,您將從values \ strings.xml文件中獲得 –

回答

8
MyProject/ 
    res/ 
     values/ 
      strings.xml 
     values-es/ 
      strings.xml 
     values-fr/ 
      strings.xml 

每個區域設置添加字符串值到相應的文件。

在運行時,Android系統根據當前爲用戶設備設置的區域設置使用適當的字符串資源集。

有關使用資源本地化信息

http://developer.android.com/guide/topics/resources/localization.html

更多信息@

http://developer.android.com/training/basics/supporting-devices/languages.html

另外,還要檢查以下鏈接

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/android/content/ContextWrapper.java/

86  @Override 
87  public Resources getResources() 
88  { 
89   return mBase.getResources(); 
90  } 

返回應用程序包的Res​​ources實例。

332 
333  public final String getString(int resId) { 
334   return getResources().getString(resId); 
335  } 

從應用程序包的默認字符串表中返回一個本地化的字符串。 參數: resId字符串的資源ID

+0

感謝,對於長時間描述,實際上我確實看過但無法理解。 –

+0

@AkhilJain很高興能幫上忙。我認爲doc有你需要的所有信息。 http://developer.android.com/guide/topics/resources/localization.html。你不明白什麼部分? – Raghunandan

+0

我打開了資源類的grep代碼,但無法理解,因爲代碼看起來乍看起來散亂,花費更多的時間似乎更深入挖掘空洞 –

1

它自動完成。按照標準,您所使用的語言位於values\strings.xml中,但如果用戶設備的語言設置爲ru,那麼對於您放入資源的所有語言,字符串自動爲values-ru\strings.xml等等。

您可以在here中閱讀關於此主題的更多信息。

在運行時,Android系統根據當前爲用戶設備設置的區域設置使用適當的字符串資源集。

相關問題