如何在Android中使用不同的参数格式化不同语言的字符串?

时间:2016-01-20 20:44:18

标签: android

我有两个字符串资源。 main \ values中的第一个是英文,并没有字符串参数:

<string name="example">Have a good day!</string>

但是在法语中,在values-fr下,我们有一个不同的短语和一个参数,如下:

<string name="example">Bonne journée M. %1$s!</string>

我应该如何使用资源字符串格式化程序?这是有效的,但它看起来并不正确(并且它会产生一个lint警告):

textView.setText(getString(R.string.example, name));

lint警告是&#34; StringFormatInvalid&#34;并且描述是&#34;格式字符串&#39; example&#39;不是有效的格式字符串,因此不应将其传递给String.format&#34;

3 个答案:

答案 0 :(得分:3)

你的方法没有错。即使参数太多,格式化程序也能完美运行。剩下的争论就会被删除。

Lint警告表示代码中可能存在意外错误。但是如果你知道自己在做什么,你可以通过将@SuppressLint("StringFormatMatches")注释添加到封闭方法或类中来抑制警告。

答案 1 :(得分:0)

您可以使用String.format(String args,Object ... args)方法。更多信息。在http://developer.android.com/reference/java/lang/String.html#format%28java.lang.String,%20java.lang.Object...%29

答案 2 :(得分:0)

这里解释了! http://programmerguru.com/android-tutorial/android-localization-at-runtime/ 您必须创建自定义区域设置并将新配置设置为getResource