代码之家  ›  专栏  ›  技术社区  ›  123Developer

在XAML中的WPF本地化,有什么简单、简单和优雅的方法?

  •  11
  • 123Developer  · 技术社区  · 15 年前

    嗯,我搜了搜,还暴饮暴食。但我找不到任何简单而优雅的指点。

    假设我必须在UI中显示如下内容:

    英语:organization-Beoing

    法语:organizazione-Beoing

        <StackPanel Orientation="Horizontal">
            <TextBlock Text="Organization -"></TextBlock>
            <TextBlock Text="{Binding Path=OrganizationName}">
            </TextBlock>
        </StackPanel>
    

    基本上,我需要将本地化文本分配给组织标签TextBlock。 我应该把连字符和“Organization-”分开并放在一个单独的标签上吗?

    5 回复  |  直到 13 年前
        1
  •  9
  •   Community Mohan Dere    9 年前

    创建项目WpfApplication1

    创建文件夹“本地化”

    添加资源文件(字符串.resx)在“localization\”中添加字符串“OrganizationText”和值“OrganizationText”

    编译时,一个设计师.cs文件已生成。不幸的是,这个文件中的所有方法都是内部的,我们需要公共访问来启用来自wpf的字符串引用。为此,请将.resx“自定义工具”替换为“PublicResXFileCodeGenerator”(>=vs2008),然后重新生成。 在中使用此xaml主窗口.xaml:

    <Window x:Class="WpfApplication1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:localization="clr-namespace:WpfApplication1.Localization"
            Title="MainWindow" Height="350" Width="525">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{x:Static localization:Strings.OrganizationText}"/>
            </StackPanel>
    </Window>
    

    若要添加“-”,必须使用多重绑定(请参见 here )

        2
  •  2
  •   Stewbob    15 年前

    我将应用程序中的所有标签等绑定到一个用于显示不同语言的对象上。我将所有的字符串存储在数据库中,然后根据用户选择的语言检索适当的字符串。这样做的优点是在运行时可以立即更新。这样,用户就不需要像您选择使windows“可本地化”时那样重新启动应用程序。

        3
  •  1
  •   banzai    15 年前

    我们有一个可以在运行时切换UI语言的应用程序,并且能够通过将适当的资源复制到某个目录来使用新的UI语言。 使用某种经过编译的资源在分布等方面太不灵活了,所以我们在资源字典中有我们的语言资源系统:字符串-每种语言在单独的XAML文件中有一个ResourceDictionary。XAML文件被标记为 内容 这个概念在我们的应用中证明是非常有用的。

        4
  •  1
  •   ygoe    12 年前

    我正在一些应用程序中成功地使用这个库,并计划将来在更多的应用程序中使用它。

    http://dev.unclassified.de/source/txlib

    推荐文章