【问题标题】:C# & WPF Language support [closed]C# 和 WPF 语言支持 [关闭]
【发布时间】:2023-02-23 23:17:17
【问题描述】:

我正在研究一个现有的解决方案,到处都是硬编码的字符串。我们希望提供该应用程序的多语言版本*,因此需要在 2 个地方同时本地化 C# 代码和 WPF:

应用核心

这个项目是 C# 并且包含 ViewModels 等。

它还负责发出通知(Windows 系统 通知和自定义 UI 通知)并向 WPF 提供数据 项目,所以这些字符串需要本地化。

应用程序.Windows

该项目混合了 WPF 和 C# 类。

它有 UI 界面、按钮标签等。这些值来自 从这个项目中或由 App.Core 项目提供。

我看过一些关于如何本地化(localize)的文章,但它们似乎涵盖了本地化 C# 或 WPF,而不是两者的结合。我已经尝试了一些方法,但对它们并不完全满意,也许它们适用于 C# 但不适用于 WPF,反之亦然。

理想情况下,我们希望用户能够在应用程序运行时更改他们的语言,因此需要确保这是可能的(以某种方式)

*我们现在只希望使用少数几种语言(荷兰语、英语、法语、德语)

非常欢迎任何帮助、建议或建议。 TIA

【问题讨论】:

  • 那么,您是否删除了旧问题并重新创建了它以提高认识?
  • 恕我直言,关闭原因是“寻求书籍、工具、软件库等的推荐”。仍然有效,无论您尝试问同一个问题的频率如何
  • @RandRandom 我正在编辑帖子,但在我能够保存更改之前它已关闭
  • 预期的过程是您改进您的帖子。然后人们考虑是否投票重新开放它。如果您删除并重试,那么您可能会惹恼那些将投票决定关闭或重新开放的人。或者也许回答你的问题。

标签: c# wpf localization


【解决方案1】:

处理 UI 字符串的最常见方式在resx-files 中。这使得它们在代码中都可用,而且它们也应该可以在 xaml 文件中访问。如果您有多个项目,您可能需要将属性中的“自定义工具”配置为PublicResXFileCodeGenerator,以公开生成的文件。

如果您希望在更改语言时进行实时更新,您可以在绑定到 xaml 代码中的字符串时使用类似 WPFLocalizeExtension 的内容。如果您在代码中使用 UI 字符串,则需要确保在更改语言时更新所有字符串。据我所知,没有内置或方便的方法可以做到这一点。

【讨论】:

  • 谢谢,我在网上看到这个并尝试实施,但发现我在两个项目中都做了类似的事情,也许这突出了我应该引入一个专门处理本地化的项目
  • @Richard.Gale 我通常会尝试将与 UI 相关的所有内容都保留在一个项目中,或者至少尽可能少。您只需要将 resx 文件保存在一个公共项目中,不需要整个项目只为一些 resx 文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-23
相关资源
最近更新 更多