我正在为WP8开发一个多语言应用程序。
我已阅读this blog entry,但我发现“让用户动态更改语言”步骤过于繁琐。
是否有可能以某种方式刷新整个应用程序或至少页面的UI元素的语言和文本属性?
答案 0 :(得分: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));
}
这样,元素将被重新渲染,并将显示本地化的字符串,而无需逐个更改它们。