Cómo localizar una cadena dentro de la información de iOS.plist archivo?


Como usted puede saber el iOS 8 requiere NSLocationWhenInUseUsageDescription clave para utilizar la ubicación del usuario. He añadido esta clave y algo de información general en mi lista de información. introduzca la descripción de la imagen aquí

¿Cómo puedo usar la cadena de traducción dentro del archivo plist ?

Update Actualizar {

Ya tengo una cadena localizable. Me pregunto si puedo usar algo como NSLocalizedString (MYSTRING,nil) dentro de la cadena plist. Sé que puedo crear varios archivos de info.plist para la localización pero me preguntaba que podría haber una manera más fácil.

Author: King-Wizard, 2014-09-09

7 answers

Debe usar el archivo InfoPlist.strings para localizar los valores de Info.plist. Para hacer esto, vaya a File->New->File, elija Strings File en la pestaña Resource de iOS, nómbrela InfoPlist y cree. Abra e inserte los valores Info.plist que desea localizar como:

"NSLocationWhenInUseUsageDescription" = "Description of this";

Ahora puede localizar el archivo InfoPlist.strings con traducciones. ¡Buena suerte!

EDITAR:

Seleccione las opciones de localización, o habilite la localización si es necesario,

editor del lado derecho

Debería poder ver el archivo también en el lado izquierdo Editor.

editor del lado izquierdo

EDITAR:

Aquí está la documentación oficial para la localización de claves Info.plist.

 363
Author: Fahri Azimov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-14 04:59:17

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 de lo descrito anteriormente. Según Apple:

Los valores localizados no se almacenan en la información.plist propio archivo. En su lugar, almacena los valores de una localización en particular en un archivo de cadenas con el nombre InfoPlist.cadena. Usted coloca este archivo en el mismo directorio de proyecto específico del idioma que utiliza para almacenar otros recursos para el mismo localización.

En consecuencia, creé un archivo de cadena llamado InfoPlist.strings y lo colocó en la carpeta xx.lproj del lenguaje "xx" (y lo agregó al proyecto usando File->Add Files to ...). Eso es. No hay necesidad de la clave "Los recursos localizados se pueden mezclar" = SÍ, y no hay necesidad de InfoPlist.cuerdas en base.lproj o en.lproj.

La aplicación utiliza la información.plist key-value como el valor predeterminado si no puede encontrar una clave en el archivo específico del idioma. Así, yo pon mi valor en inglés en la Información.archivo plist y el traducido en el archivo específico del idioma, probado y todo funciona.

En particular, no hay necesidad de localizar la lista de información.strings (que crea una versión del archivo en la base.lproj, en.lroj, y xx.lproj), y en mi caso va de esa manera no funciona.

 23
Author: Zvi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-15 08:43:43

Si algo no funciona asegúrese de agregar:

"Los recursos localizados se pueden mezclar" = YES

En la información.plist. En mi caso el InfoPlist.los archivos strings fueron simplemente ignorados.

 12
Author: tuvok,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-20 16:01:09

Recomiendo encarecidamente leer las guías de Apple y ver los recursos WWDC enumerados aquí: Temas de Internacionalización y Localización

Para responder específicamente a su pregunta, cuando agrega un nuevo idioma a su proyectointroduzca la descripción de la imagen aquí, tiene la oportunidad de elegir qué archivos de InfoPlist incluir (si tiene varios destinos, tendrá varios archivos de Info plist). Todo lo que necesita hacer para obtener la siguiente pantalla es golpear el + en Localizaciones y elegir un nuevo idioma para añadir soporte para. introduzca la descripción de la imagen aquí

Una vez que haya agregado, creará los archivos de cadena necesarios en los directorios lproj apropiados para el lenguaje dado.

EDIT EDITAR {

Solo para ser claros, iOS intercambiará la cadena por su archivo Plist basado en el idioma seleccionado por el usuario utilizando la clave de la entrada plist como la clave en el archivo de cadenas localizadas.

 6
Author: Matt S.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-09 04:46:17

Como dice RGML, puede crear una lista de información.cadenas, localizarlo y luego añadir su clave y el valor como este: "NSLocationWhenInUseUsageDescription" = " Ayuda A localizarme!";

Agregará la clave a su información.plist para el idioma especificado.

 3
Author: Cap,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-19 13:23:01

Para cualquiera que experimente el problema de la información.plist no se incluye cuando se intenta agregar localizaciones, como en Xcode 9.

Necesitas hacer la información.plist localiazble entrando en él y haciendo clic en el botón localizar en el inspector de archivos, como se muestra a continuación.

La información.plist se incluirá en los recursos del archivo para cuando vaya a agregar nuevas Localizaciones.

introduzca la descripción de la imagen aquí

 2
Author: Edward,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-17 22:46:48

En mi caso, todo estaba configurado correctamente, pero aún así la lista de información.no se encontró el archivo strings.

Lo único que realmente funcionó fue eliminar y agregar la lista de información.strings files de nuevo al proyecto.

 0
Author: d.ennis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-08 11:25:27