2012-01-25 20 views
10

So che c'è un supporto in Android per 18n un'applicazione, ma posso dare parametri a tale stringa? In Rails, posso fare qualcosa di simile:Android: I18n con parametri

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

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

C'è qualcosa di simile in Android o devo farlo io?

risposta

12

di elaborare su La risposta di Heiko e per mostrare il tuo esempio specifico, se vuoi avere più di una stringa è necessario a contarle:

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

In questo modo è possibile cambiare l'ordine delle stringhe in ogni traduzione. Utilizzando sarebbe:

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

documentazione Secondo è necessario il numero solo allora è necessario riordinare gli elementi: Indice _Argument. Normalmente, ogni specificatore di formato utilizza l'argomento successivo per formattare. Per una localizzazione comoda, è possibile riordinare gli argomenti in modo che compaiano in un ordine diverso nell'output rispetto all'ordine in cui sono stati forniti. Ad esempio, "% 4 $ s" formatta il quarto argomento (4 $) come stringa (s). È anche possibile riutilizzare un argomento con <. Ad esempio, il formato ("% o% neworld

4

Si può fare lo stesso

In strings.xml si può mettere

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

e poi nel codice si mette

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

Vedi Context.getString()