2011-05-10 10 views
7

Estoy trabajando en una aplicación para iphone y me pregunto cuál es la práctica correcta para abstraer cadenas. Estoy acostumbrado a crear un archivo con cadenas constantes y hacer referencia a ellas en mi aplicación (como direcciones URL, números de puertos o incluso etiquetas de botones). Me pregunto si esto se considera una buena práctica en Obj-C y, de ser así, ¿cuál es la mejor manera de hacerlo? ¿Debo hacer una clase con las cuerdas? O use el archivo ".strings"?Resumiendo cadenas en objetivo-c (iPhone)

p.s Puedo estar localizando mi aplicación en otro momento. No he estudiado cómo hacerlo, pero me imagino que es una buena idea extraer las cuerdas mientras estoy desarrollando.

¡Gracias! MGA

Respuesta

5

En general, se interactúa con NSBundle. Utiliza una cadena para leer una versión localizada de la cadena (que se carga desde un archivo de cadenas localizadas).

También hay algunas macros que algunas personas usan para aligerar la sintaxis, estas tienen el prefijo NSLocalizedString. Las implementaciones NSLocalizedString usan NSBundle.

imo, debe usar constantes de cadena para identificar la cadena localizada que lee (como debería con los diccionarios y las teclas de objeto).

puede declarar sus constantes utilizando este formulario (objc error u omisión):

extern NSString* const MONAppString_Download; 

y definir así:

NSString* const MONAppString_Download = @"Download"; 

luego acceder a ella usando:

NSString * tableName = nil; // << using the default 
NSString * localized = 
    [[NSBundle mainBundle] 
    localizedStringForKey:MONAppString_Download 
    value:MONAppString_Download // << return the string using the default localization if not found 
     table:tableName]; 

veces ayuda a crear funciones de envoltura para reducir el ruido, especialmente cuando las usa en muchos lugares:

// @return what's set to the above variable named 'localized'. 
NSString * MONLocalized_Download(); 

luego configura sus cadenas de archivos como un mapa, uno para cada localización que admita.

por lo tanto, siempre que necesite leer una cadena que sea visible para el usuario, utilice el formulario anterior. también considere que hay otros recursos para localizar (puntas, imágenes, pdfs, etc.) que puede agrupar con su aplicación. gran parte del trabajo aquí también es abstraído por NSBundle, de CFBundle, si lo prefiere.

buena suerte

+0

he encontrado localización no ha aumentado los ingresos. Esa no es una respuesta útil, así que aquí estaba lo que hice. Localización Wrt: Terminé escribiendo programas personalizados en Java para hacer lo siguiente: 1. Corregir cadenas sin macro NSLocalizedString alrededor de 2. Ejecutar el programa que escanea tu código fuente para NSLocalizedString y saca un archivo .strings 3. Extraiga las cadenas de UI de los archivos XIB y agréguelos al archivo .strings 5. Ejecute otro programa para volver a escribir archivos XIB basados ​​en una traducción .strings – MrAnonymous

+0

. es un dolor agregar localización después del hecho, eso ayudaría mucho. – justin

+0

Gracias - Justin, ¿cómo utilizas XIBs de localización, si es que lo haces? ¿Se olvidó alguna herramienta o se supone que los traductores tienen Interface Builder? – MrAnonymous