Tengo una aplicación de iPhone que tiene un botón para cambiar el idioma de visualización en tiempo de ejecución. He observado NSLocalizedString() que devolverá las cadenas apropiadas de acuerdo con las preferencias del sistema. ¿Cuáles son mis opciones en lugar de codificar todas las cadenas de visualización y regresar según la selección del idioma del usuario en tiempo de ejecución? Cualquier puntero será muy apreciado.Cambiar el idioma de NSLocalizedString() en tiempo de ejecución
Respuesta
La "experiencia de usuario" correcta es para que el usuario seleccione su idioma a través del panel de preferencias del sistema; no su aplicación (o el panel de configuraciones de su aplicación, etc.). No hay forma de anular esta aplicación por aplicación y no le gustaría que ninguna aplicación cambie la configuración de todo el sistema.
No estoy de acuerdo. Para el juego de televisión, prefiero el japonés porque juego japonés desde la infancia. Pero me gusta usar mi idioma materno para otras aplicaciones. – AechoLiu
Es posible que nuestra aplicación no admita la preferencia del sistema en varios países donde se introdujo, por lo que suponer que EN con DE sería una gran ventaja para muchos clientes que tienen otro segundo idioma que el predeterminado = EN. –
Esto supone que la aplicación no muestra varios idiomas a la vez. –
usa para programar orden de los idiomas por la fuerza
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en",@"de",..., nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
a continuación, utilizar
NSLocalizedString();
para mostrar cadena localizada ...
El truco de utilizar un lenguaje específico seleccionándolo desde la aplicación es forzar a NSLocalizedString a usar paquete específico según el idioma seleccionado,
aquí es el post que he escrito para esta http://learning-ios.blogspot.com/2011/04/advance-localization-in-ios-apps.html
y aquí está el código de la aplicación de una muestra https://github.com/object2dot0/Advance-Localization-in-ios-apps
Basado en el cargo por el usuario "object2.0", he elaborado un código de ejemplo puede usarlo en su aplicación para cambiar el idioma de la IU sobre la marcha.
La clase de localización principal que hace el trabajo duro:
-(NSString *) localized:(NSString *) key
{
GameInfo *gameInfo = [GameInfo sharedInstance];
// langCode should be set as a global variable somewhere
NSString *path = [[NSBundle mainBundle] pathForResource:langCode ofType:@"lproj"];
NSBundle* languageBundle = [NSBundle bundleWithPath:path];
return [languageBundle localizedStringForKey:key value:@"" table:nil];
}
Asumiendo que tiene esta función en una clase global llamado utils, llamar a esta función con el siguiente código (por ejemplo, a la salida de la palabra "Configuración" .
NSLog([utils localized:@"Settings"]);
Para cambiar el idioma:
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:langCode, nil] forKey:@"AppleLanguages"];
buen resumen :) Por cierto, podemos obtener langCode de NSUserDefaults también, si guardamos el idioma seleccionado en los NSUserDefaults después de que el usuario cambia el idioma sobre la marcha. (no sé si esta operación es costosa) – aslisabanci
@CheckSmith por qué "ofType: @" lproj "?? A menudo creo Localizable.strings – onmyway133
- 1. Forma correcta de cambiar el idioma en el tiempo de ejecución
- 2. ¿Cómo cambio el Administrador de recursos actual en tiempo de ejecución para cambiar de idioma?
- 3. Cómo cambiar el idioma en tiempo de ejecución sin problemas de diseño
- 4. Android cómo cambiar el idioma de la aplicación en tiempo de ejecución
- 5. cómo cambiar los errores de tiempo de ejecución en inglés
- 6. Lenguaje basado en JVM sin tiempo de ejecución de idioma
- 7. ¿Cómo cambiar CurrentCulture en tiempo de ejecución?
- 8. Cambiar fuente en tiempo de ejecución
- 9. ¿Cómo cambiar AndroidManifest en tiempo de ejecución?
- 10. Cambiar la orientación en tiempo de ejecución
- 11. Localización en tiempo de ejecución
- 12. WPF: Cómo cambiar la CurrentUICulture en tiempo de ejecución
- 13. Android: cambiar el color de forma en tiempo de ejecución
- 14. Cambiar el título de MenuItem en tiempo de ejecución
- 15. Cómo cambiar sql_mode en el tiempo de ejecución
- 16. Ajax cambiar el idioma
- 17. Cambiar el idioma de la aplicación mediante programación
- 18. Cambiar el idioma de la aplicación iOS sobre la marcha
- 19. el tiempo de ejecución de idioma común no ha podido establecer el punto de interrupción
- 20. ¿Cambiar dirección/puerto de WSDL EndPointAddress en tiempo de ejecución?
- 21. Cambiar barra de aplicaciones buttonicon en tiempo de ejecución
- 22. Cómo cambiar la extensión de archivo en tiempo de ejecución
- 23. EF 5 Cambiar cadena de conexión en tiempo de ejecución
- 24. Android - Cambiar diseño de fragmento en tiempo de ejecución
- 25. Cambiar idioma en C#
- 26. Cambiar la configuración regional en tiempo de ejecución en Swing
- 27. ¿Es posible cambiar app.config en tiempo de ejecución?
- 28. Cambiar el idioma/lugar de Postgres pgadmin?
- 29. ¿Cómo cambiar el idioma de mi git?
- 30. Cambiar el idioma del selector de fecha
Ver http://stackoverflow.com/question s/1669645/how-to-force-nslocalizedstring-to-use-a-specific-language – Elliot