Xamarin 응용 프로그램에서 다중 언어 지원을 개발하려고합니다. 영어와 스웨덴어로 키 값을 가진 2 개의 Resx 파일을 사용하고 공통 언어 인 appconfig
클래스에서 선택한 언어에 대한 하나의 전역 변수를 만들었습니다.Xamarin.Forms 응용 프로그램의 다국어 지원
appconfig
에서 선택한 언어에 따라 텍스트 변환을 위해 을 상속받은 클래스 TranslateExtension
을 생성했습니다.
[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 문제가 아닙니다 .i는 테스트 용으로 변경했습니다. so는 그것을 취소하는 것을 잊었습니다. 다른 말로하면, 기본적으로 영어를 설정했고 스웨덴어로 선택했습니다. 여전히 작동하지 않습니다. –
문제는 코드는 한 페이지 만로드됩니다. 드롭 다운 선택 디버거가 그곳에 가지 않을 것입니다. 그런 변화가 없습니다. 명백한 것입니다. 그러나 해결책을 찾지 못했습니다. 알아낼 수 없습니다. –