¿Cómo establecer un idioma distinto del inglés como idioma de desarrollo y localización de base?
Cuando un proyecto Xcode de la aplicación iOS se acaba de crear, en la configuración del proyecto (no objetivo) podemos ver que tieneUse Base internationalization
habilitado de forma predeterminada, y hay 2 archivos localizados paraDevelopment Language
cual esEnglish
por defecto (uno paraMain.storyboard
y uno paraLaunchScreen.storyboard
, los cuales residen en elBase.lproj
directorio). Vea a continuación la captura de pantalla:
(Por simplicidad, solo mencionaréMain.storyboard
de ahora en adelante.)
Y en la sección de localización deMain.storyboard
en el panel del lado derecho, podemos ver que elBase
la localización está marcada por defecto y también hay unEnglish
localización que no está marcada de forma predeterminada. Vea a continuación la captura de pantalla:
Y en el objetivoInfo.plist
, hay una clave llamadaLocalization native development region
(es decir.CFBundleDevelopmentRegion
), y su valor predeterminado esen
. Vea a continuación la captura de pantalla:
Si lo entiendo correctamente, con esta configuración predeterminada, el desarrollador puede escribir inglés en elBase
localización deMain.storyboard
y deja elEnglish
localización como no verificada. Si la aplicación necesita adaptarse a algún otro idioma, el desarrollador puede agregar una localización en la configuración de localización del proyecto y seleccionarMain.storyboard
en el cuadro de diálogo emergente. Vea a continuación la captura de pantalla:
TomarChinese (Simplified)
como ejemplo, esto dará como resultado un directorio recién creadozh-Hans.lproj
con unMain.strings
archivo dentro de él. (Por simplicidad, me referiré a él comoChinese
en lugar deChinese (Simplified)
.) El desarrollador solo necesita traducir las cadenas inglesas dentro de este archivo al chino (el recién creadoMain.strings
en elzh-Hans.lproj
el directorio por defecto tiene todos los textos en inglés duplicados delMain.storyboard
enBase.lproj
) Con esta configuración, elLanguage
El campo en la descripción de esta aplicación en AppStore mostrará inglés (desde elBase
localización, porque el inglés es eldevelopment language
) y chino (delChinese
localización). En el dispositivo del usuario final, si el idioma del sistema es inglés / chino (o el inglés / chino se encuentra entre los idiomas preferidos), la aplicación usará el recurso de idioma correspondiente (para inglés, use elBase
localización; para chino, use elChinese
localización). Para todas las demás preferencias de idioma, el inglés actuará como idioma alternativo porqueCFBundleDevelopmentRegion
esen
, entoncesBase
Se utiliza la localización.
Entonces mi primera pregunta será, ¿es correcto el entendimiento anterior? Para resumir, con eldevelopment language
siendo inglés, no necesitamos habilitarEnglish
localización para archivos de guiones gráficos. Solo usa elBase
localización y escribir directamente en inglés en los archivos del guión gráfico. Solo necesitamos agregar localización para otros idiomas además del inglés. (En realidad, parece problemático si habilitamos elEnglish
localización. SiEnglish
la localización está habilitada, entonces necesitamos mantener ambos textos enBase.lproj/Main.storyboard
yen.lproj/Main.strings
.)
Si la comprensión anterior es correcta, mi segunda pregunta será, ¿cómo lograr la internacionalización de manera inversa? Es decir, si quisiera usarChinese
como eldevelopment language
y escribir chino en elBase
localización, y solo agregue localización para idiomas que no seanChinese
, ¿es posible y cómo hacer eso en Xcode? No puedo encontrar una manera de cambiar eldevelopment language
en la configuración del proyecto para afirmar que elBase
localización en el proyecto esChinese
más bien queEnglish
.