C# 使用静态方法的WPF定位
我有一个C#.Net 4.5 WPF应用程序。 应用程序必须是可本地化的。这意味着我必须能够更改应用程序中所有可视内容的标签/标题/按钮/文本 我有一个现有的模型来获取id字符串并返回给定语言的文本。比如:C# 使用静态方法的WPF定位,c#,wpf,localization,C#,Wpf,Localization,我有一个C#.Net 4.5 WPF应用程序。 应用程序必须是可本地化的。这意味着我必须能够更改应用程序中所有可视内容的标签/标题/按钮/文本 我有一个现有的模型来获取id字符串并返回给定语言的文本。比如: String localizedCancelText = Localize.Text("@Cancel"); //Cancel String localizedMoneyLeftText = Localize.Text("@MoneyLeft",10); //$10 left 其中Loca
String localizedCancelText = Localize.Text("@Cancel"); //Cancel
String localizedMoneyLeftText = Localize.Text("@MoneyLeft",10); //$10 left
其中Localize.Text(..)方法是静态的
这一切都很好
问题在于标签/标题,这些都是在WPF中设置的。
这样做的目的是让所有标签(都是可视的)都包含关键字,而不是英文文本。例如,WPF取消按钮类似于:
<Button Content="@Cancel"/>
然后我必须取“@Cancel”并查找Cancel在给定语言/位置/部门中的书写方式
我的问题是:
我该怎么做?我可以从codebehind设置每个标签/按钮/文本,但这将是一个丑陋的解决方案。我更愿意如上所示在WPF中设置它,然后使用Localize.Text(..)方法“以某种方式”转换@Cancel,以获得给定语言/位置/部门的实际Cancel文本 我们使用一个名为的软件,可以解析WPF并提取可本地化的字符串。它可以利用这方面的所有资源做到这一点。我们只需将所有资源导入Sisulizer,然后从那里导出一个csv文件,其中包含我们提供给翻译人员的所需翻译。Sisulizer构建卫星资源DLL,然后将其用于我们的软件中 最好使用资源文件
.resx
扩展名。您必须在resx文件中声明标签和值。我的解决方案基于此:
这让我可以使用
<Button Content="{markUp:Localized Key=@BigButton}">
并且仍然能够在运行时更改语言