2017-06-12 40 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