此问题在此处已有答案:
Is it possible to have placeholders in strings.xml for runtime values?(14个答案)
5年前关闭。
在我的Android应用程序中,我打算实现字符串的国际化,但在语法和不同语言中构建句子的方式上遇到了问题。
例如:
“5分钟前”-英语
“vor 5分钟”-德语
我可以在strings.xml中执行类似下面的操作吗?
<string name="timeFormat">{0} minutes ago</string>
然后一些魔法
getString(R.id.timeFormat, dynamicTimeValue)
这种行为也可以解决另一个不同语序的问题。
5条答案
按热度按时间osh3o9ms1#
是的,只要按照标准的
String.format()
方式格式化字符串即可。请参见方法
Context.getString(int, Object...)
和Android或JavaFormatter
文档。在您的示例中,字符串定义为:
q35jwt9p2#
如果
XML
中需要两个变量,可以用途:字符串变量为
%1$d text... %2$d
或%1$s text... %2$s
。示例:
字符串文件
activity.java
wwtsj6pe3#
如果需要使用String.format(String,Object...)设置字符串的格式,则可以通过将格式参数放入字符串资源中来实现。例如,使用以下资源:
在此示例中,格式字符串有两个参数:%1$s是字符串,%2$d是十进制数。您可以使用应用程序中的参数设置字符串的格式,如下所示:
如果您希望了解更多信息,请查看:http://developer.android.com/intl/pt-br/guide/topics/resources/string-resource.html#FormattingAndStyling
pgpifvop4#
有很多方法可以使用它,我建议你看看这个关于字符串格式的文档。
http://developer.android.com/intl/pt-br/reference/java/util/Formatter.html
但是,如果您只需要一个变量,则需要使用%[type],其中 [type] 可以是任何标志(请参阅上面站点内的标志类型)。(例如,“My name is**%s**”或将我的名称设置为大写,请使用“My name is**%S**”)
b4wnujal5#
注意,对于这个特定的应用程序,有一个标准库函数
android.text.format.DateUtils.getRelativeTimeSpanString()
。