Bien, creo que sé lo que está pasando.
UIKit decide en qué idioma mostrar las cadenas, según el valor de [[NSBundle mainBundle] preferredLocalizations]
. La idea detrás de esto es usar recursos traducidos siempre que sea posible, volviendo al inglés de otra manera. Por ejemplo, si no proporciona la traducción de su aplicación en finlandés y se selecciona el finlandés en Configuración-> General-> Internacional-> Idioma, su aplicación estará en inglés. Puede ser un poco más complicado (UIKit puede revisar toda la lista de idiomas en el orden mostrado en Settings.app, tratando de encontrar el primer idioma para el que tiene traducciones), pero el punto es válido.
Lo anterior puede ser demasiado obvio como para omitir un matiz crucial. El idioma determinado por el algoritmo anterior se utiliza para la interfaz de usuario completa de la aplicación. Por ejemplo, si el paquete de la aplicación no contiene sk.lproj, no se mostrará nada en eslovaco. De hecho, tiene sentido porque de lo contrario algunas partes de la interfaz de usuario estarían en eslovaco, otras partes, en inglés.
Abra el paquete de la aplicación compilada para ver qué carpetas * .lproj están allí. El mismo conjunto, ordenado según las preferencias del usuario, será devuelto por [[NSBundle mainBundle] preferredLocalizations]
. Todas las cadenas localizables, incluidos los elementos del botón de la barra del sistema, se mostrarán en uno de esos idiomas. Si no admite, por ejemplo, ruso, toda la interfaz de usuario aparecerá en otro idioma, incluso si se selecciona ruso en Settings.app.
Si este es el caso de su aplicación en efecto, hay dos cosas bien y un mal que hay que hacer:
- derecha: proporcionar una traducción eslovaca para todos y cada cadena que se muestra en su aplicación, traducir cualquier texto -contiene puntas para eslovaco también;
- derecho: ignore completamente el eslovaco si no puede (o no necesita) dar soporte;
- mal: seleccione cualquier archivo de cadenas o cualquier punta, abra el inspector de Xcode, haga clic en "Añadir localización ..." (si el botón está desactivado, primero haga clic en "Hacer archivo localizable"), escriba "sk", haga clic en "Agregar" y compile el proyecto. Esto hará que UIKit piense que su aplicación se traduce al eslovaco, y los elementos del botón de la barra del sistema aparecerán automáticamente en eslovaco cuando se seleccione en Settings.app.
Si ve un comportamiento diferente, puede haber algún problema con la aplicación project/build/built.Por ejemplo, noté que cuando hace un archivo localizado, su copia no localizada no se elimina del paquete de aplicaciones previamente creado.
Gracias por la entrada Costique, uso dos dispositivos, uno con la configuración de formato Rep. Checa y el eslovaco, pero ambos me han mostrado siempre "Cancelar" en lugar de inspeccionar "Zrusit". No quiero exagerar, no es agradable. Tal vez me olvidé de algo para establecer? – Vanya
El idioma de la interfaz de usuario se establece en Configuración-> General-> Internacional-> Idioma. Region Format se usa para establecer un estilo separado para NSNumberFormatter y NSDateFormatter. Si con el idioma de la interfaz de usuario configurado en eslovaco, el botón Cancelar sigue indicando Cancelar, entonces sí, solo use UIBarButtonItems personalizados. – Costique
Sí, por supuesto, se ha establecido para el idioma eslovaco como predeterminado y no he cambiado eso, es por eso que me pregunto cómo puedo hacerlo. Mi primer pensamiento fue que puede estar relacionado con el formato, pero no parece ser así. – Vanya