我知道Android在18n应用程序中有支持,但是我可以为这样的字符串提供参数吗?在Rails中,我可以这样做:
en:
hello: "Hello %{name}! You've got %{count} messages."
t("hello", name: "Klaus", count: 5)
Android中是否有类似内容,或者我自己必须这样做?
答案 0 :(得分:12)
详细说明Heiko的答案,并展示您的具体示例,如果您想要多个字符串,则需要对其进行编号:
<string name="hello">Hello %1$s! You've got %2$d messages.</string>
这样您就可以在每次翻译中切换字符串的顺序。使用它将是:
String hello = getString(R.strings.hello, "Klaus", 5);
答案 1 :(得分:4)
你可以做同样的事情
在strings.xml中,您可以输入
<string name="xyz">Do you really want to report [%s] as spammer?</string>
然后在您的代码中添加
String foo = getString(R.strings.xyz,"Joe Doe");
答案 2 :(得分:0)
Phrase似乎完全可以满足您的需求。 Here's a article关于它的实现。下面是本文的示例。
<string name="greeting"> Hello {name}, today\'s cook yielded {yield} {unit}.</string>
然后...
// Call put(...) in any order
CharSequence greeting = Phrase.from(context, R.string.greeting)
.put("unit", unit)
.put("name", name)
.put("yield", yield)
.format();