Estoy escribiendo una aplicación para iOS, donde quiero que el usuario pueda cambiar el idioma de interfaz de usuario independiente de la del iPhone o del iPad lenguaje. La pregunta es, ¿cómo puedo volver a cargar el correspondiente archivo NIB para el que actualmente se muestra la vista cuando los cambios de idioma y ¿cómo puedo cargar el adecuado .las cadenas de archivo, de modo que NSLocalizedString funciona adecuadamente?

  • Sabes que la gente puede cambiar el idioma en la aplicación de Configuración y su aplicación deben no tiene una opción aparte de esto, ¿verdad?
  • Usted puede ser que necesite una opción aparte de esto, si usted quiere que un determinado idioma el idioma alternativo, que no es el mismo idioma que el primer existentes localización de los usuarios de la lista de idiomas. Este es un patrón común.
InformationsquelleAutor tommazzo | 2011-05-27

2 Comentarios

  1. 27

    Esto debe hacer el truco, suponiendo que de es el nuevo idioma seleccionado por el usuario. También se asegurará de que usted se reiniciaron la vista actual.

    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"de", nil] 
                                              forKey:@"AppleLanguages"];
    • Gracias por su rápida respuesta. Pero no tiene que cambiar el idioma de todo el teléfono?
    • No, usted no puede cambiar la configuración del teléfono desde el código (al menos de «aprobado» código).
    • Aquí está una lista de todos los de la representación de Nombres de Lenguas: loc.gov/standards/iso639-2/php/English_list.php
    • Lo importante es, que esta instrucción se ejecuta antes de que se inicie la aplicación: hacerlo en la principal.m en la función main (), antes de UIApplicationMain() es llamado.
    • Si desea que los cambios surtan efecto inmediatamente en algún momento después de que se inicie la aplicación, añade [[NSUserDefaults standardUserDefaults] sincronizar];
    • He visto esta maravillosamente simple sugerencia en varios lugares, incluyendo la llamada a sincronizar), pero para mí esto es totalmente no funciona… ¿Cómo..?
    • ¿Cómo se puede «reiniciar» su punto de vista controlador? He intentado restablecer incluso desde la app delegado (restablecimiento de la ventana rootController) y después de que trató con la tab bar controller que restablece su viewControllers propiedades, pero todavía el idioma no cambia antes de reiniciar.
    • He estado usando esto con la llamada después de sincronizar, no siempre funciona en iOS 8.3. A veces se niegan a cambiar, no importa qué.
    • En el método que tiene que escribir el código de arriba de las líneas?
    • Soy nueva localización . he creado cadena de archivos para 3 idiomas ¿cómo puedo actualizar el lenguaje en el botón haga clic en sin necesidad de reiniciar la aplicación

  2. 4

    Personalmente, no me gusta la idea de dar a NIB a los traductores. En lugar, el diseño de las Puntas por lo que hay espacio suficiente para idiomas distintos del inglés (por lo general, se requieren de un 50% más de espacio para texto) y, a continuación, guardo todos los recursos de texto en Localizable.las cadenas de archivos.

    Entonces, en mi código que fija el texto para cada control de interfaz de usuario.

    [_myButton setTitle:NSLocalizedString(@"My button title", 
                                          @"My description for translation file, e.g. including chars limit")
               forState:UIControlStateNormal];

    Me parece que esto hace que el proceso de traducción más fáciles de manejar.

    Para responder a tu pregunta original, tendría que poner este código en el viewWillAppear función de su UIView para asegurarse de que se vuelve a cargar cada vez que la interfaz de usuario vuelve a aparecer.

    • Acabo de ir a través de la localización de mis app y tengo que estar de acuerdo con lo que usted está diciendo. +1.
    • Gracias, esto es sin duda una manera de hacerlo. Voy a hablar de este cambio de idioma cosa de nuevo con mis clientes. Una alternativa, utilizando la PUNTA de archivos para la localización es preguntar al usuario si desea reiniciar la aplicación, una vez que la configuración de idioma se detecta un cambio.

Dejar respuesta

Please enter your comment!
Please enter your name here