gpt4 book ai didi

c# - 即时刷新 UI 语言

转载 作者:行者123 更新时间:2023-11-30 12:41:00 26 4
gpt4 key购买 nike

我正在关注这个 guide本地化我的应用程序。我不想获取系统语言,所以我不使用 ILocalize 接口(interface)和依赖服务。我有这 3 个英语、西类牙语和法语的 resx 文件:

  • AppResources.es.resx
  • AppResources.fr.resx
  • AppResources.resx(英文)

这是我的 TestPage.xaml 代码,使用指南中的 TranslateExtension 类:

<?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:t="clr-namespace:LanguageTest.Resources;assembly=LanguageTest.Resources"
x:Class="LanguageTest.TestPage">
<Label Text="{t:Translate TestText}" VerticalOptions="Center" HorizontalOptions="Center" />
</ContentPage>

使用这段代码我初始化了语言设置:

public App ()
{
// I can change among "en", "es" and "fr"
AppResources.Culture = new CultureInfo("es");
this.MainPage = new NavigationPage(new TestPage());
}

在这种情况下,文本以西类牙语显示。但我想在页面显示后更改语言(例如,使用 LanguageSettingsPage 用户可以在应用程序运行时更改语言)。

public App ()
{
AppResources.Culture = new CultureInfo("es");
this.MainPage = new NavigationPage(new TestPage());
AppResources.Culture = new CultureInfo("fr");
// At this point the texts are diplayed in Spanish, not in French
}

如何在不再次执行 new TestPage() 的情况下刷新页面以显示法语文本?

最佳答案

这不是 Resx 的特定解决方案,但它可以让您根据用户需求加载任何语言。无需手动设置字符串,因为绑定(bind)会完成这项工作。看看I18NPortable和 sample 。启动和运行它非常容易。

绑定(bind)示例:

<Button Text="{Binding Strings[key]}" />

动态更改语言(将更新所有绑定(bind)):

I18N.Current.Locale = "fr";

关于c# - 即时刷新 UI 语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39786730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com