es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Etiquetas de fecha de la Cultura Tailandesa son inconsistentes.

Enfrenté este problema del calendario tailandés hace unos días, pero se resolvió gracias a la gran ayuda de la comunidad.

Siguiendo el error mencionado anteriormente, las etiquetas de la cultura tailandesa o el formato de fecha son inconsistentes cuando actualizamos el idioma del teléfono (Inglés -> Tailandés). Por favor, verifique que las etiquetas se muestren como 2021 en lugar de 2564.

Aunque el selector de fecha se muestra correctamente:

Para mostrar la etiqueta de la fecha, estamos utilizando:

dateTime.ToString(“dd MMM yyyy”, CultureInfo.InvariantCulture)

Estamos actualizando el CultureInfo en el archivo App.cs al cambiar la configuración:

public override void OnConfigurationChanged([NotNull] Configuration newConfig)
{
base.OnConfigurationChanged(newConfig);

var javaLocale = newConfig.Locales.Get(0);
if (javaLocale != null)
{
    ResetNetLocale(javaLocale);
}

}

private static void ResetNetLocale([NotNull] Locale javaLocale)
{
var cultureInfo = javaLocale.TryGetCultureInfo() ?? CultureInfo.InvariantCulture;

CultureInfo.CurrentUICulture = cultureInfo;
CultureInfo.CurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;

}

En los elementos de la lista o en otras vistas para actualizar el CultureInfo también estamos utilizando:

CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CurrentUICulture;
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;

Aunque las etiquetas de otras regiones/culturas, como (Francia, Alemania, etc.), se muestran correctamente. El único problema que enfrentamos es con la cultura tailandesa.

Cualquier indicio para resolver el problema sería realmente útil.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución del problema del calendario tailandés en Xamarin.Forms

    Recientemente me enfrenté a un problema con el calendario tailandés en Xamarin.Forms, donde las etiquetas de la cultura tailandesa o el formato de fecha eran inconsistentes al actualizar el idioma del teléfono (de inglés a tailandés). Aquí está lo que me ayudó a resolver el problema:

    • El selector de fecha se mostraba correctamente, por lo que no se necesitaban cambios allí.
    • Para mostrar las etiquetas de fecha, utilizamos dateTime.ToString("dd MMM yyyy", CultureInfo.InvariantCulture).
    • Para actualizar la información de la cultura en App.cs cuando cambia la configuración, utilizamos:
    public override void OnConfigurationChanged([NotNull] Configuration newConfig)
    {
        base.OnConfigurationChanged(newConfig);
    
        var javaLocale = newConfig.Locales.Get(0);
        if (javaLocale != null)
        {
            ResetNetLocale(javaLocale);
        }
    }
    
    private static void ResetNetLocale([NotNull] Locale javaLocale)
    {
        var cultureInfo = javaLocale.TryGetCultureInfo() ?? CultureInfo.InvariantCulture;
    
        CultureInfo.CurrentUICulture = cultureInfo;
        CultureInfo.CurrentCulture = cultureInfo;
        CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
    }
    
    • Para actualizar la información de la cultura en un elemento de lista o en otras vistas, utilizamos:
    CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CurrentUICulture;
    CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
    

    El problema solo se producía en la cultura tailandesa, mientras que las etiquetas de otras regiones/culturas como Francia, Alemania, etc., se mostraban correctamente. Con los cambios anteriores, se resolvió el problema del calendario tailandés. Un agradecimiento especial a la comunidad de Xamarin.Forms por la ayuda en la resolución de este problema.

Comments are closed.