2010-09-13 7 views
5

sólo estoy familiarizando con la localización de los archivos xib y me preguntaba si hay una manera de localizar las cadenas dentro de la xib refiriendo a las plists directamente ...iPhone de localización de archivos xib

apreciar algunos pensamientos.

Respuesta

1

La manera sugerida por Apple para hacer esto es exprot las cadenas en los archivos .strings en los paquetes .lproj, que serán cambiados por el marco de localización de Cocoa.

Xcode puede generar los archivos .strings del xib, lo que hace que la localización sea bastante directa.

Haga clic con el botón derecho en el archivo xib en Xcode y elija Get Info. Seleccione la pestaña General y en la parte inferior haga clic en Make File Localizable. Luego podrá agregar localizaciones haciendo clic en Add Localization en esa misma pestaña.

Recomendaría this tutorial para obtener información paso a paso (y bellas imágenes).

+1

Gracias. En realidad, estoy tratando de referir directamente los plists como en_Strings.plist/fr_Strings.plists para las cadenas XIB también. Quiero evitar crear un en_XIB, fr_XIB. – Mansi

7

Si no desea localizar directamente los archivos .xib, puede extraer el texto que contienen en archivos .strings y, una vez traducidos los archivos .strings, vuelva a insertarlos en su archivo .xib para producir localizado versiones. Estas operaciones de extracción/inyección se realizan utilizando la utilidad ibtool.

Encontré instrucciones detalladas sobre cómo hacer esto en this website.

3

Mi método falla un poco @Clafou responde, sin embargo, puede ser un poco más directo. Simplemente configuro IBOutlets para mi botón y cadenas de etiquetas (creadas en xib) dentro de mi controlador .h.

@interface DetailViewController : UIViewController { 


IBOutlet UILabel *TitleLabelMain; 

} 

luego fue a mi regulador .m y dio estas etiquetas y botones con un valor NSLocalizableStrings.

- (void)viewWillAppear:(BOOL)animated { 

TitleLabelMain.text = NSLocalizedString(@"titleLabel",nil); 

Y, por supuesto, necesitará un valor definido en Localizable.strings

"titleLabel" = "THIS TEXT IS LOCALIZED!"; 
0

Creo localizar xibs no es directamente una buena opción. Estoy usando https://github.com/steipete/Aspects para conectar el método awakeFromNib de UILabel y localizar el texto allí. Ejemplo:

#define Localized(_v_) NSLocalizedString(_v_, nil) 
NSError *err = nil; 
[UILabel aspect_hookSelector:@selector(awakeFromNib) 
       withOptions:AspectPositionAfter 
        usingBlock:^(id<AspectInfo> aspectInfo) { 
         UILabel *label = aspectInfo.instance; 
         NSString *lStr = Localized(label.text); 
         if (lStr) { 
          label.text = lStr; 
         } 
} error:&err]; 
Cuestiones relacionadas