¿Cómo puedo poner un parámetro en una cadena localizada en Android?
Necesito poner una pieza dinámica de texto en una cadena localizada, pero tiene que ir a diferentes lugares dependiendo del idioma.
Por ejemplo, necesito dos cadenas como:
- Adición de archivos de localización de cadenas de un servidor
- ¿Cómo puedo crear una aplicación androide multilingüe para los idiomas de derecha a izquierda?
- Internalización de Android WebView
- Recursos catalanes y vascos en Android
- Pregunta de localización de Android
Español: La hora actual es HH: mm: ss Otro idioma: HH: mm: ss es la hora actual
Puedo pensar en un enfoque, que es tener una cadena localizada preDate y postDate donde postDate está vacía en inglés y preDate está vacía en Other. Esto funcionará, pero no parece muy elegante o escalable.
¿Hay una mejor manera de hacer esto?
- Lint: ¿Cómo ignorar los errores "<key> no se traduce en <language>"?
- Cómo cambiar el nombre de la aplicación en Launcher en android según el idioma seleccionado en Configuración de Teléfono?
- Después de la rotación de la pantalla, se cambiará el idioma de mi aplicación
- Contactos de Android: Colocación / clasificación local incorrecta
- Localización de Android
- Internacionalización del problema string.xml
- Uso de la configuración regional para detectar si utiliza unidades imperiales
- BigDecimal da NumberFormatException en Android 4.0.3 con localización
Yo uso esto en mi recurso de cadena.
<string name="duration"><xliff:g id="minutes" example="42" >%s</xliff:g> mins <xliff:g id="seconds" example="28" >%s</xliff:g> secs</string>
Que imprime xx minutos yy segundos cuando llama:
getString(R.string.duration, minutes, seconds);
En otro idioma, puede traducirlo cambiando la ubicación de minutos y segundos. Debe imprimir, por ejemplo: mins xx secs yy
Se debe incluir un esquema en el encabezado:
<resources xmlns:xliff="rn:oasis:names:tc:xliff:document:1.2">
El formato correcto de cadenas de xml de android es <string name="tst">string %1$s integer %2$d</string>
Creo que estás haciendo el camino correcto.
Otra solución no tan buena es si se pone toda la cadena de formato en recursos como
Español: La hora actual es% d:% d:% d Otro idioma:% d:% d:% d es la hora actual
En general, no me gusta este enfoque, ya que su código de formato se divide en dos lugares.
- IllegalArgumentException: No se encontró ninguna vista para id para fragmento – ViewPager en ViewPager
- Sqlite eliminar la sintaxis de consulta en Android