strings multi localizable language app iphone cocoa-touch ios localization

iphone - multi - Múltiples archivos Localizable.strings en una aplicación de iOS



nslocalizedstring (4)

¿Es posible tener múltiples componentes que tengan sus localizaciones separadas en una aplicación?

Por ejemplo, quiero localizar cadenas en mi aplicación, pero también uso ShareKit, que se localiza a sí mismo (por lo que mi paquete contendrá 2 Localizable.strings en diferentes ubicaciones). Por lo tanto, ShareKit contiene carpetas como en.lproj y de.lproj que contienen archivos Localizable.strings y quiero crear lo mismo para el resto de mi proyecto, pero mantenlos separados.

Intenté mantenerlos separados y eso provocó que no se utilizaran las secuencias de mi aplicación. ¿Algunas ideas?


Hay una manera de hacer esto que es bastante simple.

Hay varias macros para localizar, una de las cuales es NSLocalizedStringFromTable() . Esto toma tres parámetros:

  1. La cadena para localizar
  2. El nombre de la tabla, que es solo un nombre de archivo
  3. El comentario, al igual que en NSLocalizedString()

Si usa un nombre de tabla, entonces puede tener otro archivo de cadenas, es decir, si hago NSLocalizedStringFromTable(@"name", @"MyStrings", @"whatever"); luego pongo mis cadenas en MyStrings.strings usará eso.

Vea la publicación de Matt Gallagher sobre esto.


No es posible hacer lo que estás preguntando. Puede tener varios archivos Localizable.strings, pero solo uno por idioma en sus respectivas carpetas .lproj.

Entiendo que no desea editar los archivos de ShareKit Localizable.strings porque sería una molestia al actualizar, pero creo que debe ver cuánto trabajo realmente tomaría. Dependiendo de la cantidad de idiomas que necesite admitir, puede ser menos trabajo localizar sus propias cadenas y agregarlas al final de los archivos de ShareKit Localizable.strings que implementar su propio esquema de localización.

Por cierto, para detectar en qué idioma está configurado el dispositivo actualmente, puede usar:

NSArray *preferedLocalizations = [[NSBundle mainBundle] preferredLocalizations];

Esto le proporciona una matriz de cadenas de código de dos letras. El elemento en el índice 0 es el idioma seleccionado actualmente. Esto podría ser útil si necesita tomar decisiones lógicas basadas en el idioma.


cada archivo / recurso puede ser localizable, también los archivos .xib IB o imágenes jpg / png, solo necesita seleccionar un archivo en su proyecto, abrir información, ir a la pestaña / sección "general" y presionar "hacer que el archivo sea localizable" "... luego puede agregar el idioma que desee, xCode creará un nuevo archivo duplicando el primero y lo colocará en la carpeta correcta ...

luca


oh ok, no sé ShareKit, pero supongo que no puedes editar sus archivos de texto y solo agregar tus nuevas palabras a esos archivos, ¿no?

entonces puede considerar crear su propio archivo de "diccionario" e intentar localizarlo, luego leerlo y ponerlo en un NSDictionary donde pueda leer las palabras / valores individuales ... puede insertar un registro en su archivo "myDict". plist "con llave" saludo "de tipo Cadena con valor" ciao "para el italiano y" hola "en el inglés

NSString *bundle = [[ NSBundle mainBundle] pathForResource:@"myDict" ofType:@"plist"]; NSMutableDictionary *savedStock = [[NSMutableDictionary alloc] initWithContentsOfFile:bundle]; NSString *greetingsTranslatedInTheGoodLanguage = [savedStock objectForKey:@"greeting"]; // just to try what you have read: NSLog (@"translated by your own dictionary: %@", greetingsTranslatedInTheGoodLanguage); [savedStock release];

luca

ps leí los comentarios también ...