2012-01-25 21 views
10

Sé que hay soporte en Android para 18n una aplicación, pero ¿puedo dar parámetros a dicha cadena? En Rails, puedo hacer algo como esto:Android: I18n con los parámetros

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

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

¿Hay algo similar en Android o tengo que hacerlo yo mismo?

Respuesta

12

dar más detalles sobre La respuesta de Heiko, y para mostrar tu ejemplo específico, si quieres tener más de una cadena necesita numerarlos:

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

De esta forma puede cambiar el orden de las cadenas en cada traducción. Su uso sería:

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

De acuerdo con la documentación que necesita el número solo entonces necesita volver a pedir elementos: _Indicador de índice. Normalmente, cada especificador de formato consume el siguiente argumento para formatear. Para una localización conveniente, es posible reordenar los argumentos para que aparezcan en un orden diferente en el resultado que el orden en que se suministraron. Por ejemplo, "% 4 $ s" formatea el cuarto argumento (4 $) como una cadena (s). También es posible reutilizar un argumento con <. Por ejemplo, el formato ("% o% neworld

4

Usted puede hacer lo mismo

En strings.xml se puede poner

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

y luego en el código se pone

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

Ver Context.getString()