2012-03-17 15 views
8

Antes de reinventar la rueda, ¿tiene Android alguna posibilidad de convertir un número entero en una cadena ordinal compatible con varios idiomas? Es decir, convertiría el número entero 3 en "3rd" en inglés y "3eme" en francés.Conversión de Android a formato ordinal

Puedo ver cómo hacerlo yo mismo usando un poco de lógica junto con la sustitución automática de cadenas de Android, pero pensé que esto seguramente debería haber sido encontrado por otros, y no solo por el uso con fechas.

Respuesta

5

Java ni Android tienen soporte para crear cadenas ordinales. Android tiene soporte para crear recursos de cadenas plurales, pero no ordinales.

+0

Pude resolver este problema usando los plurales, al menos lo suficientemente bien para mis propósitos. Funciona para el inglés y el francés en los rangos con los que estoy tratando, pero cuando empiece otras traducciones, quizás tenga que cambiarlo de nuevo. Principalmente, estaba tratando de encontrar una solución en la que mi aplicación no tuviera que estar "al tanto" del idioma que se estaba utilizando y solo podía usar el soporte automático de cadenas de Android. – gordonwd

2

Si el rango para el que necesita ordinales es limitado, entonces usted está probablemente mejor usar una <string-array> para definirlos:

<string-array name="ordinals"> 
    <item>zeroth</item> 
    <item>1st</item> 
    <item>2nd</item> 
    <item>3rd</item> 
    <item>4th</item> 
    <item>5th</item> 
    <item>6th</item> 
</string-array> 

y luego acceder a ella a través de:

String ordinal = getResources().getStringArray(R.array.ordinals)[count]; 

Por supuesto esto no te permite la traducción automática a otros idiomas, tienes que hacerlo tú mismo (y si tu conteo va más allá del rango de este código simplista, obtendrás una excepción).

Cuestiones relacionadas