1
我想在我的Xamarin應用程序中開發多語言支持。 我使用了2個Resx文件,這些文件在英語和瑞典語中具有鍵值,併爲共同的appconfig
類中的所選語言創建了一個全局變量。Xamarin.Forms應用程序支持多語言
我根據從appconfig
選擇的語言創建的類TranslateExtension
這對於文本轉換繼承Imarkupextension
。
[ContentProperty("Text")]
public class TranslateExtension : IMarkupExtension
{
public string Text { get; set; }
public object ProvideValue(IServiceProvider serviceProvider)
{
if (Text == null)
return null;
ResourceManager rt1 = new ResourceManager(typeof(Resources.AppResources));
if (AppConfig.SelectedLanguage == "Swedish")
{
rt1 = new ResourceManager(typeof(Resources.AppResources_sd));
}
var translation = rt1.GetString(Text);
return translation;
}
}
現在我在XAML頁面
<StackLayout>
<Picker x:Name="pickerForLanguage" BackgroundColor="White" HeightRequest="40" Title="Select Language" SelectedIndexChanged="SellectedLanguage">
<Picker.Items>
<x:String>English</x:String>
<x:String>Swedish</x:String>
</Picker.Items>
</Picker>
<Label Text="{resources:TranslateExtension Greeting}" />
Home.xaml.cs
public void SellectedLanguage(object sender, EventArgs e)
{
if (pickerForLanguage.SelectedIndex == -1)
{
AppConfig.SelectedLanguage = "English";
}
else
{
AppConfig.SelectedLanguage = "Swedish";
}
}
文本會從轉換到所選擇的語言結合這樣的文本值appconfig
第一次加載頁面時。當我從下拉菜單中更改語言時,它將僅在appconfig
中更改所選語言的值。它不會調用TranslateExtension
值,並且在第一次後不會更改。
oh.thats不是問題。我只是改變了測試..我忘了撤消它。其他我已經設置了英語默認和選定的索引m chnging它sweden.still它不工作 –
問題是,代碼只會在頁面加載時執行一次,之後在下拉選擇調試器將不會去那裏。因此它不會改變。這顯而易見..但它的解決方案明白了嗎? –