Pregunta

Tengo un guión gráfico de iPhone con algunas vistas. Por ejemplo, se nombra un título de elemento de navegación News, que debe traducirse para otros idiomas.

Cuando agrego una nueva localización a mi guión gráfico, creó un duplicado de mi guión gráfico actual para el nuevo idioma. Aquí puedo cambiar el título del artículo de navegación, pero para mí no parece muy útil. ¿Qué pasa si mi guión gráfico contiene 100 vistas y necesito admitir 10 idiomas? Si necesito cambiar algo en mi guión gráfico original, tengo que hacer los mismos cambios para todos los idiomas. Eso parece muy extraño. ¿En qué situaciones pueden ser esto útil?

¿Qué puedo hacer en su lugar? Debería tener solo el guión gráfico inglés y traducir manualmente cada elemento en ViewController usando NSLocalizedString?

¿Fue útil?

Solución

Puede hacer la localización cambiando los títulos de los elementos de la interfaz de usuario en el código:

self.title = NSLocalizedString("News", nil);

Si desea localizar su aplicación en holandés, por ejemplo, lo tendrá en Dutch.lproj/Localizable.strings:

"News" = "Nieuws";

Luego puede hacer esto para cada elemento e idioma de interfaz de usuario.

Otros consejos

En iOS 6 hay una configuración de proyecto en la pestaña Información que dice "use la internacionalización base". Si marca la casilla, extraerá todas las cuerdas del guión gráfica y en archivos .strings internacionales.

De esta manera, no tiene que tener varias copias del guión gráfico.

enter image description here

A partir de iOS 6, puede decidir usar la internacionalización base: todos los archivos de guiones gráficos y XIB/NIB solo existen una vez en una carpeta llamada Base.LProj. La localización de los elementos GUI se coloca en archivos .strings relacionados en cada directorio de localización.

Por ejemplo, "MainstoryBoard.StoryBoard" se colocará en la base.lproj. Un archivo asociado llamado "MainstoryBoard.strings" se coloca en EN.LProj y cualquier localización que aplique.

¡Esto es realmente muy guapo, especialmente en combinación con limitaciones de diseño!

Puede encontrar este tutorial de video aquí útil:

http://www.youtube.com/watch?v=cf1rf02qvzq

El enfoque es tener un guión gráfico separado para que cada idioma localice, luego dejar que un guión se encargue de propagar los cambios que realiza en el guión gráfico original para todos los demás idiomas.

Para aplicaciones con un objetivo de implementación de iOS 5 y guiones gráficos, uso algo como esto para localizar mis pestañas donde mi primer ViewController en un guión gráfico es un UITabBarController:

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    // ...

    if ([self.window.rootViewController isKindOfClass:UITabBarController.class]) {
        UITabBarController *tabBarController = (UITabBarController *) self.window.rootViewController;

        // Localize tab items
        NSArray *tabBarItems = tabBarController.tabBar.items;

        [tabBarItems enumerateObjectsWithOptions:NSEnumerationConcurrent 
                                      usingBlock:^(UITabBarItem *item, NSUInteger tabIndex, BOOL *stop) {
            NSString *keyName = [NSString stringWithFormat:@"tabBarItem%i", tabIndex];
            item.title = NSLocalizedString(keyName, @"TabBarItems");
        }];
    } else {
        // The root view controller is not the UITTabBarController
    }

    // ...
}

y tener algo como esto en mi Localizable.strings Archivos:

// MARK: TabBar
"tabBarItem0" = "My First Tab Label";
"tabBarItem1" = "My Second Tab Label";
"tabBarItem2" = "My Third Tab Label";

Es posible que también encuentre útil la localización de políglot. En lugar de llamar a NSLocalizedString () en código, puede especificar directamente la clave en su guión gráfico. Puede evitar las salidas innecesarias y reducir el código de calderas.

https://github.com/negusoft/polyglot

Te sugiero que aprendas la línea de comandos Ibtool, te ayuda a asistirte a localizar todos tus guiones gráficos :) Aquí hay un tutorial aquí. http://www.albertmata.net/articles/introduction-to-internationalization-using-storyboards-on-ios-5.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top