2010-02-25 11 views
10

Tengo un proyecto que usa una biblioteca estática (SL). En esa SL, hay un par de cadenas que me gustaría localizar y el proyecto incluye todos los archivos de localización. La localización funciona bien cuando se almacenan todas las traducciones de texto en el mismo archivo. Lo que pasa es que me gustaría separar las cadenas SL de las otras cadenas. Intenté poner dos archivos * .strings diferentes (Localizable.strings y Localizable2.strings) en la carpeta de idioma de interés pero eso no funcionó. También traté de usar dos archivos * .strings con el mismo nombre (Localizable.strings) pero con diferentes rutas. Tampoco funcionó. Parece que solo se admite un archivo de localización, ¿verdad? ¿Alguien podría sugerir una buena manera de hacer esto? Estoy usando SDK 3.2 beta 2.Localización de cadenas en lib estática

Respuesta

15

No es posible agrupar en un lib estática, pero puede crear nuevo paquete como "MyStaticLibraryName.bundle", poner dentro de todas las localizaciones y utilizar el código de abajo en vez "NSLocalizedString()". Todo lo que necesita hacer: agregar una biblioteca estática y un paquete de recursos.

NSString *MyLocalizedString(NSString* key, NSString* comment) { 
static NSBundle* bundle = nil; 
if (!bundle) { 
    NSString* path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MyStaticLibraryName.bundle"]; 
    bundle = [[NSBundle bundleWithPath:path] retain]; 
} 

return [bundle localizedStringForKey:key value:key table:nil]; 
} 
+1

Para que la cadena de caracteres funcione con esta configuración, se debe usar el parámetro -s. – hariseldon78

2

Haga la cadena localizable para la biblioteca estática, luego coloque ese archivo de cadena en una carpeta "YourLibraryResource". Cambie el nombre de la carpeta "YourLibraryResource.bundle".

Ahora incluye este paquete también en el proyecto junto con la biblioteca. Luego usa el código dado por abuharsky.

6

Poner archivos con el mismo nombre intro one proyecto nunca funciona, porque en la aplicación resultante terminan todos en la misma ubicación. (. Xcode no conserva la estructura de directorios)

Pero se puede poner parte de su localización en Localizable2.strings y luego usar:

NSLocalizedStringFromTable (@ "clave", @ "Localizable2", @ "")

+1

Sí, ¡esa es exactamente la solución correcta! – slatvick

Cuestiones relacionadas