0

J'essaie d'implémenter I18N/Localization pour Xamarin.Forms comme décrit ici: https://developer.xamarin.com/guides/xamarin-forms/advanced/localization/ - même si je mets la langue sur mon appareil en français et ai un fichier Resx pour le français, il y a toujours la traduction par défaut renvoyée. J'ai déjà essayé de désactiver le déploiement rapide (comme recommandé sur le site mentionné ci-dessus), mais pas de succès jusqu'à présent.Xamarin.Forms La localisation retourne toujours la langue par défaut

Dans cette ligne:

var translation = ResMgr.Value.GetString(Text, ci); 

la valeur ci est fr-CH, la chaîne retournée est cependant la langue par défaut et non français

// You exclude the 'Extension' suffix when using in Xaml markup 
[ContentProperty("Text")] 
public class TranslateExtension : IMarkupExtension 
{ 
    readonly CultureInfo ci; 
    const string ResourceId = "ResxI18N.Resx.Resources"; 

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

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

    public string Text { get; set; } 

    public object ProvideValue(IServiceProvider serviceProvider) 
    { 
     if (Text == null) 
      return ""; 

     var translation = ResMgr.Value.GetString(Text, ci); 

     if (translation == null) 
     { 

     } 
     return translation; 
    } 


<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
xmlns:i18n="clr-namespace:ResxI18N.Helpers;assembly=ResxI18N" 
xmlns:local="clr-namespace:ResxI18N" x:Class="ResxI18N.ResxI18NPage"> 
<Label Text="{i18n:Translate Welcome}" VerticalOptions="Center" HorizontalOptions="Center" /> 

L'exemple complet peut être trouvé ici: https://github.com/hot33331/ResxI18N

+0

Je pense que vous pourriez partager une démo, qui peut reproduire ce problème. –

Répondre

1

Votre ressource doit être définie avec Embedded.

Modifiez l'option de cette image suivante.

enter image description here

+0

Merci, Cole Xia! – hot33331