1

我正在为 WP8 开发多语言应用程序。

我已阅读此博客条目,但我发现“使用户能够即时更改语言”步骤过于繁琐。

是否有可能以某种方式刷新整个应用程序或至少页面的 UI 元素的语言和文本属性?

4

1 回答 1

3

文章中方法的问题是当前页面的元素因为已经渲染,所以不会自动更新,需要在代码中更新字符串。

一种可能的解决方案是在更改语言时重新加载页面。该SetUILanguage方法如下所示:

private void SetUILanguage(string locale)
{
    // Set this thread's current culture to the culture associated with the selected locale.
    CultureInfo newCulture = new CultureInfo(locale);
    Thread.CurrentThread.CurrentCulture = newCulture;
    Thread.CurrentThread.CurrentUICulture = newCulture;

    // Set the FlowDirection of the RootFrame to match the new culture.
    FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection),
        AppResources.ResourceFlowDirection);
    App.RootFrame.FlowDirection = flow;

    // Set the Language of the RootFrame to match the new culture.
    App.RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);

    // Refresh the page in order to localize already rendered elements
    NavigationService.Navigate(new Uri(NavigationService.Source + "?Refresh=true", UriKind.Relative));
}

这样元素将被重新渲染,并显示本地化的字符串,而无需一一更改。

于 2013-09-09T07:47:54.013 回答