Elbrinner da Silva Fernandes

Blog sobre Xamarin, MVVMCROSS y UWP (Plataforma universal de Windows)

Bug Xamarin IOS 11 al recuperar el idioma del sistema.

Bug Xamarin IOS 11 al recuperar el idioma del sistema.

Me he fijado que al instalar mi aplicación en IOS 11 siempre se muestra en inglés, ignorando el idioma del sistema al mostrar la interfaz para el usuario.

La función de .net que uso pare recuperar el idioma es:

CultureInfo.DefaultThreadCurrentUICulture.Name;

Al probar en un simulador o terminal con IOS inferior a 11, funciona perfectamente, en mi caso retorna “es-ES”, pero con IOS 11, retorna “EN”.

Al analizar el problema, me he encontrado que es un bug conocido de Xamarin que se puede ver aquí: https://bugzilla.xamarin.com/show_bug.cgi?id=59596 que al momento de escribir, seguia en proceso.

Para solucionar el problema, he implementado en plataforma una función que me retorna el idioma del sistema de forma nativa.

He creado una interfaz para recuperar el valor desde ViewModel.

Interfaz en la PCL (Core)

public interface IDeviceInfo
{ 
	string GetLanguageSystem(); 
}

 

Android


public class DeviceInfo : IDeviceInfo
{
     public string GetLanguageSystem()
 {
     return Locale.Default.ToString();
 } 
}

IOS


  public class DeviceInfo : IDeviceInfo
 {
     public string GetLanguageSystem()
    {
         return NSLocale.CurrentLocale?.LocaleIdentifier?.ToString();
    } 
}

UWP



public class DeviceInfo : IDeviceInfo
 {
     public string GetLanguageSystem()
     {
         return CultureInfo.DefaultThreadCurrentUICulture.Name;
     } 
}

 

Es importante que todos los idiomas soportados por la aplicación este configurado en el archivo Info.plist, si no lo hacemos, la función no retornará bien los valores en IOS 11.

La solución como podes ver, es simples de aplicar, pero tenga en cuenta que este error solo ocurre en IOS 11 y que seguramente estará resuelto en breve.

 

 

Elbrinner da Silva Fernandes Elbrinner da Silva Fernandes
Consultor Xamarin, experto en mobilidad en everis España.
Madrid Spain

Xamarin Certificado

Xamarin Master

Certificación Solutions developer App Builder

Certicación Solutions Associate Web applications

Microsoft Active Professional

Microsoft Professional

Specialist programaming in C#

Specialist programaming in HTML5 with JavaScript & CSS3

Planet Xamarin