Como sabrás, el iOS 8 requiere la clave NSLocationWhenInUseUsageDescription para usar la ubicación del usuario. He agregado esta clave y alguna información general en mi lista de información.
¿Cómo puedo usar la cadena de traducción dentro del archivo plist?
- Actualización -
Ya tengo una cadena localizable. Me pregunto si puedo usar algo como NSLocalizedString (MYSTRING, nil) dentro de la cadena de plist. Sé que puedo crear múltiples archivos de info.plist para la localización, pero me preguntaba si podría haber una manera más fácil.
Respuestas:
Debe usar el
InfoPlist.strings
archivo para localizar valores deInfo.plist
. Para hacer esto, vaya aFile->New->File
, elijaStrings File
en laResource
pestaña deiOS
, asígnele un nombreInfoPlist
y cree. Abra e inserte losInfo.plist
valores que desea localizar como:Ahora puede localizar
InfoPlist.strings
archivos con traducciones. ¡Buena suerte!EDITAR:
seleccione las opciones de localización o habilite la localización si es necesario,
deberías poder ver el archivo también en el editor del lado izquierdo.
EDITAR:
Aquí está la documentación oficial para la
Info.plist
localización de claves.Créditos a Marco , ¡gracias por incluir las fotos en esta respuesta!
fuente
Todo lo anterior no funcionó para mí (XCode 7.3), así que leí la referencia de Apple sobre cómo hacerlo, y es mucho más simple que lo descrito anteriormente. De acuerdo con Apple:
En consecuencia, creé un archivo de cadena llamado InfoPlist.strings y lo coloqué en la carpeta xx.lproj del lenguaje "xx" (y lo agregué al proyecto usando Archivo-> Agregar archivos a ...). Eso es. No se necesita la clave "Los recursos localizados se pueden mezclar" = SÍ, y no se necesita InfoPlist.strings en base.lproj o en.lproj.
La aplicación utiliza el valor-clave Info.plist como valor predeterminado si no puede encontrar una clave en el archivo específico del idioma. Por lo tanto, pongo mi valor en inglés en el archivo Info.plist y el traducido en el archivo específico del idioma, probado y todo funciona.
En particular, no hay necesidad de localizar InfoPlist.strings (que crea una versión del archivo en base.lproj, en.lroj y xx.lproj), y en mi caso ir de esa manera no funcionó.
fuente
Si algo no funciona, asegúrese de agregar:
"Los recursos localizados se pueden mezclar" = SÍ
en la lista de información. En mi caso, los archivos InfoPlist.strings fueron ignorados.
fuente
Consejos
Recuerde que el simulador de iOS explota por defecto el idioma de su sistema. Cambie también el idioma (y la región) en la configuración del simulador de iOS para probar sus traducciones.
La cadena de localización (consulte los documentos de Apple aquí ) debe ser
y no (con la cita "...")
fuente
"NSLocationWhenInUseUsageDescription"="description"
es válido). Puede ser con o sin.Recomiendo encarecidamente leer las guías de Apple y ver los recursos de la WWDC que se enumeran aquí: Temas de internacionalización y localización
Para responder específicamente a su pregunta, cuando agrega un nuevo idioma a su proyecto , tiene la oportunidad de elegir qué archivos de InfoPlist incluir (si tiene múltiples objetivos, tendrá múltiples archivos de información). Todo lo que necesita hacer para obtener la siguiente pantalla es presionar el + debajo de Localizaciones y elegir un nuevo idioma para agregar soporte.
Una vez que haya agregado, creará los archivos de cadena necesarios en los directorios lproj apropiados para el idioma dado.
--EDITAR--
Para ser claros, iOS cambiará la cadena de su archivo Plist en función del idioma seleccionado actualmente por el usuario utilizando la clave de la entrada plist como clave en el archivo de cadenas localizado.
fuente
Paso a paso, localice Info.plist:
Save As
campo, escriba InfoPlist SOLAMENTE ("I" mayúscula y "P" mayúscula)"NSLocationAlwaysAndWhenInUseUsageDescription" = "blabla";
"NSLocationAlwaysUsageDescription" = "blabla2";
¡Eso es todo trabajo y tiene que localizar su archivo info.plist!
fuente
Para cualquiera que experimente el problema de que no se incluya info.plist al intentar agregar localizaciones, como en Xcode 9.
Debe hacer que la info.plist sea localizable al ingresar y hacer clic en el botón de localización en el inspector de archivos, como se muestra a continuación.
El archivo info.plist se incluirá en los recursos del archivo para cuando vaya a agregar nuevas localizaciones.
fuente
Como dice RGML, puede crear un InfoPlist.strings, localizarlo y luego agregar su clave y el valor de esta manera: "NSLocationWhenInUseUsageDescription" = "¡Ayuda para localizarme!";
Agregará la clave a su info.plist para el idioma especificado.
fuente
En mi caso, todo estaba configurado correctamente pero aún no se encontró el archivo InfoPlist.strings.
Lo único que realmente funcionó fue eliminar y agregar nuevamente los archivos InfoPlist.strings al proyecto.
fuente
En mi caso, la localización no funcionó debido al símbolo '-' en el nombre. Ejemplo: "aero-Info.plist" Y archivos localizados: "aero-InfoPlist.strings" y "aeroInfoPlist.strings" no funcionaron.
fuente
Al usar el
InfoPlist.strings
archivo (en XCode, debe colocarse al lado delInfo.plist
archivo; la ubicación real del archivo puede estar en cualquier parte del proyecto probablemente) tenga cuidado de usar el nombre corto de la clave para la traducción.
Estaba tratando de usar
Privacy - Camera Usage Description
, pero la clave de trabajo esNSCameraUsageDescription
fuente