2012-01-25 40 views
10

我知道在Android中支持18n的應用程序,但是我可以給這樣的字符串提供參數嗎?在Rails中,我可以這樣做:Android:具有參數的I18n

en: 
    hello: "Hello %{name}! You've got %{count} messages." 

t("hello", name: "Klaus", count: 5) 

Android中是否有類似的東西,或者我必須自己做這件事嗎?

回答

12

爲了詳細說明Heiko的回答,並展示您的具體示例,如果您想要有多個字符串你需要給它們編號:

<string name="hello">Hello %1$s! You've got %2$d messages.</string> 

這樣你就可以在每個翻譯中切換字符串的順序。使用它將是:

String hello = getString(R.strings.hello, "Klaus", 5); 
+0

根據文件,你需要數字只有那麼你需要重新排序項目:_參數索引。通常,每個格式說明符都使用格式化的下一個參數。爲便於本地化,可以對參數進行重新排序,以便它們在輸出中以不同的順序出現,而不是按順序排列。例如,「%4 $ s」將第四個參數(4 $)格式化爲一個字符串。也可以在<中重複使用一個參數。例如,格式(「%o% neworld

4

你可以做同樣的

在strings.xml中,你可以把

<string name="xyz">Do you really want to report [%s] as spammer?</string> 

,然後在你的代碼你把

String foo = getString(R.strings.xyz,"Joe Doe"); 

Context.getString()