ios - traducir - como cambiar el idioma del app store de chino a español
localización en ios swift. ¿Cómo puedo cambiar el idioma de la aplicación en tiempo de ejecución? (2)
Por favor no hagas esto Esto lleva a una experiencia de usuario muy confusa; la gente espera que sus aplicaciones se ejecuten en el lenguaje del sistema que elijan.
También se encontrará con problemas cuando se trata de UI y cadenas que no controla, como los controladores de vista del sistema (por ejemplo, compartir archivos) y formateadores de fechas, números, cantidades, etc.
Si cada aplicación tuviera un selector de idioma de manera predeterminada, sería una experiencia muy engorrosa ir y seleccionarla para cada aplicación. Esta es la razón por la cual la API de localización está estructurada tal como es; si usa el sistema alternativo del lenguaje, todo funcionará como debería.
Estoy creando una aplicación en ios swift. ahora quiero hacer la aplicación en lenguaje dual, así que desde el menú del editor solo exporto e importo para la localización. es crear dos archivos para mí.
ahora quiero poner dos botones en la primera página de mi aplicación. y cuando el usuario presiona el botón 1, quiero cargar el idioma inglés. y si el usuario presiona el botón 2, quiero cargar el idioma turco. Entonces, ¿cómo puedo hacer esto rápidamente?
En lugar de utilizar el método NSLocalizedString
para localizar su aplicación, cargue las cadenas localizables de acuerdo con el idioma seleccionado y NSLocalizedString
desde su código.
Cargando los datos del paquete:
// Exemple with english language
if let path = NSBundle(forClass:object_getClass(self)).URLForResource("Localizable", withExtension: "strings", subdirectory: nil, localization: "en")?.path {
if NSFileManager.defaultManager().fileExistsAtPath(path) {
// Keep a reference to this dictionary
dicoLocalisation = NSDictionary(contentsOfFile: path)
}
}
Reemplazando NSLocalizedString:
func localizedStringForKey(key:String) -> String {
// First we check if the dictionary exists
if let dico = dicoLocalisation {
if let localizedString = dico[key] as? String {
// If the localization exists, return it
return localizedString
} else {
// Returns the key if no String was found
return key
}
} else {
// If not, we can use the NSLocalizedString function
return NSLocalizedString(key, comment: key)
}
}
Si desea manejar esto rápidamente, he creado una clase localisator personalizada disponible en Github , que le permite cambiar el idioma desde cualquier lugar de la aplicación e incluso guardarlo para futuros lanzamientos de la aplicación. La implementación es más o menos la misma que he explicado.