在我的Android应用中,我将用国际化实现我的字符串。我在语法和不同语言的句子结构方面有问题。
例如:
“5分钟前”-英语 vor 5 Minuten -德语
我可以在strings.xml中做如下的事情吗?
<string name="timeFormat">{0} minutes ago</string>
然后是魔法
getString(R.id.timeFormat, dynamicTimeValue)
这种行为也可以解决词序不同的问题。
在我的Android应用中,我将用国际化实现我的字符串。我在语法和不同语言的句子结构方面有问题。
例如:
“5分钟前”-英语 vor 5 Minuten -德语
我可以在strings.xml中做如下的事情吗?
<string name="timeFormat">{0} minutes ago</string>
然后是魔法
getString(R.id.timeFormat, dynamicTimeValue)
这种行为也可以解决词序不同的问题。
当前回答
如果你在XML中需要两个变量,你可以使用:
% 1 $ d文本…%2$d或%1$s文本…%2$s用于字符串变量。
例子:
strings.xml
<string name="notyet">Website %1$s isn\'t yet available, I\'m working on it, please wait %2$s more days</string>
activity.java
String site = "site.tld";
String days = "11";
//Toast example
String notyet = getString(R.string.notyet, site, days);
Toast.makeText(getApplicationContext(), notyet, Toast.LENGTH_LONG).show();
其他回答
如果你在XML中需要两个变量,你可以使用:
% 1 $ d文本…%2$d或%1$s文本…%2$s用于字符串变量。
例子:
strings.xml
<string name="notyet">Website %1$s isn\'t yet available, I\'m working on it, please wait %2$s more days</string>
activity.java
String site = "site.tld";
String days = "11";
//Toast example
String notyet = getString(R.string.notyet, site, days);
Toast.makeText(getApplicationContext(), notyet, Toast.LENGTH_LONG).show();
注意,对于这个特定的应用程序,有一个标准的库函数android.text.format.DateUtils.getRelativeTimeSpanString()。
如果需要使用String格式化字符串。format(String, Object…),那么你可以把你的format参数放在String资源中。例如,使用以下资源:
<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>
在这个例子中,格式字符串有两个参数:%1$s是一个字符串,%2$d是一个十进制数。你可以像这样用你的应用程序中的参数格式化字符串:
Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
如果你想了解更多,请查看:http://developer.android.com/intl/pt-br/guide/topics/resources/string-resource.html#FormattingAndStyling
是的,只是用标准的String.format()方式格式化你的字符串。
请参见方法背景信息。getString(int, Object…)和Android或Java Formatter文档。
在你的例子中,字符串的定义是:
<string name="timeFormat">%1$d minutes ago</string>
有很多方法来使用它,我建议你看看这个文档关于字符串格式。
http://developer.android.com/intl/pt-br/reference/java/util/Formatter.html
但是,如果你只需要一个变量,你需要使用%[type],其中[type]可以是任何标志(参见上面站点内的标志类型)。(即。“我的名字是%s”或将我的名字设置为大写,使用这个“我的名字是%s”)
<string name="welcome_messages">Hello, %1$S! You have %2$d new message(s) and your quote is %3$.2f%%.</string>
Hello, ANDROID! You have 1 new message(s) and your quote is 80,50%.