如何本地化流文档

时间:2010-10-17 09:55:20

标签: wpf localization flowdocument

我想基于流文档实现应用程序View的上下文帮助。例如,用户按下Ctrl + F1,并在此视图上显示有关当前视图的上下文帮助。必须对帮助内容进行本地化。

在窗口标记中可以看起来像这样:

<Window x:Class="UdkppReports.Window2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window2" Height="300" Width="300">
<Grid>
    <ContentControl x:Name="View"/>
    <ContentControl x:Name="Help" Visibility="Collapsed">
        <ContentControl.Style>
            <Style>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding CurrentView.HelpContent}" Value="{x:Null}">
                        <Setter Property="Grid.Visibility" Value="Collapsed"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ContentControl.Style>
    </ContentControl>
</Grid>

View.HelpContent属性是具有嵌入式FlowDocumentScrollViewer的UserControl的实例。在每个View类的非本地化应用程序中,我将创建一个HelpContent类。本地化应用程序怎么样?

现在只有一个想法 - 每个View类必须创建尽可能多的文本应用程序支持的HelpContent类。例如,对于SomeView类,我有:

  • SomeViewHelp类(默认)
  • SomeViewHelp_fr类
  • SomeViewHelp_it类

并在自定义SomeView.LoadHelp命令(或自定义Loadhelp事件或其他地方)中我需要动态确定帮助类的名称,例如

string lang = Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName;
string helpClassShortName = "SomeView_" + lang;

并进一步获取完整的类名,尝试动态创建帮助类的实例,并将View.HelpContent属性分配给此实例。这应该有效,但可能是流量文档本地化的标准方法吗?

2 个答案:

答案 0 :(得分:0)

您是否尝试使用LocBaml工具进行本地化?每个xaml元素都支持x:Uid属性,因此您可以使用this solution。还有一篇关于MS Exam 70-502 Training Kit中本地化的文章。

答案 1 :(得分:0)

在我看来,最好的方法是使用WPF Localization Extension。 与该库的作者click me

一起查看关于流文档支持的讨论