2017-06-12 26 views
1

我在我的代碼中使用getString(R.string.xxxx, "Test", "Test2"),並得到錯誤「格式字符串xxxx不是有效的格式字符串...」!無效的格式字符串 - 信息哪種語言是錯誤的

到目前爲止好,但我怎麼能看到哪種語言是錯誤的?
我有30多個語言並不想每次手動檢查每個文件。

有什麼方法可以找到錯誤的語言文件/文件?

+0

您使用的是編號參數風格:'%1 $ s','%2 $ D'?或者只是'%s'?因爲這可能是原因。如果是這樣的話,那麼你可能需要更新所有的語言。 –

+0

我使用%1 $ s和%2 $ s!我已經用其中一種語言找到了問題,但我總是需要打開每個語言文件並手動檢查語法。林特似乎知道這個問題,所以它知道錯誤的翻譯文件,但它不顯示它:-( – chrisonline

回答

0

試試這個代碼:

DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    Resources r = getResources(); 
    Configuration c = r.getConfiguration(); 

    Locale[] loc = Locale.getAvailableLocales(); 
    for (int i = 0; i < loc.length; i++) { 

     c.locale = loc[i]; 
     Resources res = new Resources(getAssets(), metrics, c); 
     String s1 = res.getString(R.string.app_name); 
     Log.d("LOCALE",loc[i].getDisplayCountry()+" : "+ s1 ); 
    } 

在Android Studio中:

右鍵單擊strings.xml檔案,並選擇打開翻譯編輯器。

enter image description here

More info in developer.android.com

+0

是的,這是一個解決方法,以查看列表中的所有資源。是否沒有本機方式在Android Studio內部看到這是錯誤的? – chrisonline

+0

當然,我知道翻譯編輯器,但我也必須自己檢查每一種語言哪一種是錯誤的。我的意思是,如果有快捷方式或記錄LINT發現錯誤的語言。 – chrisonline