La cantidad "dos" no funciona en Android Strings-Resources Plural

Android permite a los traductores definir Plurals . El ejemplo siguiente funciona para mí con locale 'en':

<plurals name="numberOfSongsAvailable"> <item quantity="one">One song found.</item> <item quantity="other">%d songs found.</item> </plurals> 

Pero agregar un valor especial para two no funciona, todavía se toma la other versión. ¿El uso de two depende de la configuración regional? ¿Así que Android solo toma la versión two si la localidad especifica explícitamente que debería haber una versión two ?

La pregunta SO Android plurals tratamiento de "cero" puntos el mismo error cuando se utiliza zero en Inglés, que también no es compatible. No hay soluciones en esta pregunta, excepto para evitar los plurales de Android que quiero evitar.

Android está usando el sistema CLDR plurals, y esto no es sólo cómo funciona (así que no esperes que esto cambie).

El sistema se describe aquí:

http://cldr.unicode.org/index/cldr-spec/plural-rules

En resumen, es importante entender que "uno" no significa el número 1. En su lugar estas palabras clave son categorías, y los números específicos n que pertenecen a cada categoría están definidos por las reglas de la base de datos CLDR:

http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html

Aunque parece que no hay ningún lenguaje que usa "cero" para nada distinto de 0, hay lenguajes que asignan 0 a "uno". Hay ciertamente muchos de los casos donde "dos" contiene otros números que apenas 2.

Si Android permite que hagas lo que pretendías, tus aplicaciones no podían traducirse correctamente a cualquier número de idiomas con reglas plurales más complejas.

Eso es un viejo error . Sólo hay algunas cláusulas if que faltan en la sección de código correspondiente de la clase PluralRules .

Como la respuesta en su pregunta vinculada declaró, usted está mejor usando MessageFormat o algo más. El error se ha informado en mayo de 2010, no me esperaba que beeing fijo en un futuro próximo (y todavía tiene una versión defectuosa en los dispositivos de la versión antigua en este caso) .

Completamente falso, ver los comentarios.

Sí, el uso de dos es específico para locale. Sólo porque usted le da el número 2 no significa que va a utilizar la cantidad = "dos". Sólo utilizará esa cantidad para idiomas que tienen casos especiales para el número 2

Desde http://developer.android.com/guide/topics/resources/string-resource.html#Plurals :

Tenga en cuenta que la selección se hace sobre la base de la necesidad gramatical. Una cadena de cero en inglés será ignorada incluso si la cantidad es 0, porque 0 no es gramaticalmente diferente de 2, o cualquier otro número excepto 1 ("cero libros", "un libro", "dos libros", y así en). No se deje engañar ni por el hecho de que, por ejemplo, dos sonidos como si sólo pudiera aplicarse a la cantidad 2: un lenguaje puede requerir que 2, 12, 102 (y así sucesivamente) se traten como unos a otros, pero de manera diferente a otros cantidades. Confíe en su traductor para saber qué distinciones su idioma realmente insiste en.

  • Android: ¿Funcionamiento de matriz en ImageView, animado?
  • Herramienta de traducción para Android para ayudar a proporcionar el contexto
  • Android Plural Strings con múltiples parámetros
  • Traducir fácilmente xml en Android
  • Android - cómo analizar json con el objeto en el índice
  • ¿Cómo compartir textos y traducciones entre aplicaciones móviles?
  • Error: "app_name" no se traduce en af
  • Cómo aplicar mediante programación simultáneamente translate & scale animation en una vista
  • ¿Alguna buena herramienta de traducción de la comunidad para Android?
  • Impedir que Google reproduzca la traducción automática de la descripción de mi aplicación
  • ¿Cómo traduce su aplicación para Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.