Estoy internacionalizando mi aplicación y estoy buscando una solución para lidiar con formularios plurales. Me encontré con el proyecto Mozilla's PluralForm, que esencialmente abstrae el tema de los plurales para la internacionalización. Así es como funciona:International Pluralization Lib para Objective-C?
Existen varias "reglas plurales" que los idiomas pueden seguir. Cada idioma encaja en una y solo una de las muchas reglas en plural (la documentación de Mozilla tiene 15 reglas potenciales en plural). Por ejemplo, en los idiomas con la regla 0 (como el chino), no hay formas en plural, por lo que solo hay una forma de palabra necesaria. En los idiomas con la regla 1 (como el alemán), cada palabra tiene dos formas distintas de plural. Y así sucesivamente, dependiendo de cómo coincidan las reglas.
Cuando se está programando una cadena internacionalizada, pasar, no sólo la cadena a ser internacionalizada, pero el número que desea pluralizar el sustantivo con:
print("You have " + num + " " + PluralForm.get(num, downloads) + ".");
En Objective-C, una lo haría de forma diferente:
NSString *str = [NSString stringWithFormat:NSLocalizedStringFromTable(@"%d Items"), myNumber];
Por supuesto, este ejemplo de Objective-C anterior no resuelve la cuestión de las formas plurales.
Cuando la función PluralForm.get recibe una llamada, dependiendo del idioma actualmente en uso, aplica la forma plural, y extrae la cadena internacionalizada adecuada del archivo de cadenas dependiendo de la sub-regla específica que debe seguir .
La ventaja para PluralForm es clara (al menos para mí). Se abstrae las reglas de lenguaje reales del codificador, por lo que no es necesario que se dupliquen en todas las ubicaciones donde tiene que tratar con una forma plural.
Me gustaría utilizar un sistema como al programar las aplicaciones de mi iPhone. ¿Hay algún proyecto o código disponible que conecte el PluralForm de Mozilla al objetivo-c?
He editado la pregunta un poco para que sea más general. Espero que no te importe. –