Saltar al contenido

Localización de Label StringFormat en Xamarin.Forms

Solución:

Encontré la respuesta en Localizing XAML

Tuve que agregar el texto El valor es: {0} al archivo de recursos.
Necesitaba agregar un IMarkupExtension para la traducción. Agregué la clase al mismo espacio de nombres que el archivo de recursos.

[ContentProperty("Text")]
public class TranslateExtension : IMarkupExtension
{
    private readonly CultureInfo _ci;

    static readonly Lazy<ResourceManager> ResMgr = new Lazy<ResourceManager>(
        () => new ResourceManager(typeof(AppResources).FullName, typeof(TranslateExtension).GetTypeInfo().Assembly));

    public string Text { get; set; }

    public TranslateExtension()
    {
        if (Device.RuntimePlatform == Device.iOS || Device.RuntimePlatform == Device.Android)
        {
            _ci = DependencyService.Get<ILocalize>().GetCurrentCultureInfo();
        }
    }

    public object ProvideValue(IServiceProvider serviceProvider)
    {
        if (Text == null)
            return string.Empty;

        return ResMgr.Value.GetString(Text, _ci) ?? Text;
    }
}

y utilícelo como:

<Label Text="{Binding Value, StringFormat={resources:Translate LabelTextTheValueIs}}" />

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *