NSLocalizedString devuelve text que no está definido en ninguna parte.

Está bien, estoy oficialmente estupefacto. Comencé un proyecto IOS hace un time, y jugué un poco con la localización un poco al principio, lo que se convirtió en un lío, porque todavía no sabía cómo hacerlo.

Ahora he decidido hacer la localización desde cero y, por lo tanto, he desechado todos los files .strings y he creado una estructura multilingüe adecuada. Empecé con los files vacíos de Localizable.strings y ejecuté la aplicación para ver si limpiaba todo correctamente. Con los files vacíos de Localizable.string, supuse que mis llamadas "NSLocalizedString" simplemente devolverían la key como text. No lo hacen Todavía devuelven el text antiguo que tenía en los viejos files .strings.

Solo para estar seguro, puse una statement NSLog en una de las llamadas NSLocalizedString, como tal:

NSString *text = NSLocalizedString( key, nil ); NSLog(@"key=%@ text=%@", key, text); 

Luego busco en mi disco duro todo el text que se devolvió. Ningún file en mi disco duro contiene la cadena que devuelve NSLocalizedString. Y es una cadena completamente diferente a la key, por lo que tampoco NSLocalizedString puede buildla.

¿Alguien sabe cómo puede suceder esto? ¿La información antigua está almacenada en caching en algún lugar por XCode? ¿Cómo puedo persuadir a la herramienta para que utilice los nuevos files de Localizable.strings? Obviamente, ya he "limpiado" y reconstruido todo el proyecto.

Intenta eliminar la aplicación del teléfono, luego limpia tu proyecto e instala la aplicación de nuevo.

Si todavía no funciona, comtesting que no has entrometido de alguna manera con las Reglas de compilation (Xcode 4 -> selecciona tu objective -> pestaña "Reglas de compilation"). Aquí, comtesting si no tienes demasiados "CopyStringsFile" reglas que no usan "CopyStringsFile". Si es así, puede eliminarlos todos excepto uno.

Si está probando en el simulador, intente reiniciar el simulador utilizando la opción "Restablecer contenido y configuration …" en el menu de la aplicación "iOS Simulator".

Cuando vuelve a implementar una nueva compilation de la aplicación, incluso después de una compilation limpia, a menudo no borra el contenido almacenado en caching de la versión comstackda anteriormente.

¿También limpió la carpeta de construcción? command + opción + shift + ko vaya al producto, presione la opción, habrá una carpeta de compilation limpia, por lo general, el file de resources se almacena en caching, cualquier reemploop de file de resources (file con el mismo nombre de file pero otro object) podría no ser detectado por XCode

Además, eliminar el simulador de aplicación / reinicio ayuda. Los files eliminados en algún momento no se eliminan cuando se vuelven a implementar.