c# - 这是在 .Net 中维护国际化资源的好方法

标签 c# .net localization resources internationalization

我想到了三种方法来使用 Visual Studio 2008 在 WinForms 的 .Net 项目中创建和维护资源。(我确信应该有不止三种方法。)我需要决定在开始为我们的产品实现国际化之前。

  • 为每个 .net 项目中的每个 Windows 窗体或 UI 片段(自定义控件)提供单独的资源文件集 (resx)。当表单或控件属性中的 Localizable 属性设置为 true 时,这些由 Visual Studio 自动生成。
  • 每个 .net 项目有一个资源文件。这是手动添加的,并使用资源字符串和消息手动更新。
  • 拥有一个资源管理器项目,其中包含一组 .net 项目的所有组件的资源。

就我个人而言,我不喜欢第一种方法,因为它会创建大量资源文件。我们在这种方法中获得的唯一优势是我们不需要手动在 UI 元素中设置文本。

我喜欢第二种和第三种方法,因为它们易于维护,而且您只需处理一组资源。所以没有重复的字符串和消息。翻译人员也很容易。

你有什么想法?请分享。

最佳答案

我倾向于使用 VS 创建项目并提供默认资源集,然后通过 SDK 工具 winres.exe、resgen.exe 和 al.exe 在 vi​​sual studio 之外维护任何其他资源。

您可以将资源维护在一个相当简单的文件夹结构中,每个区域性一个文件夹,只需一个或两个批处理文件即可将资源构建到附属程序集中。这为您提供了将 VS 解决方案保留在核心产品上的优势,并且所有本地化都可以在事后完成。

关于c# - 这是在 .Net 中维护国际化资源的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1375064/

相关文章:

c# - 我可以从它调用的扩展方法中修改值类型对象吗?

c# - 在 Windows Phone 8.1 中初始化 XLabs

.net - DateTimeOffsetAdapter干扰DateTimeOffset对象的WCF序列化

没有时区组件的日期时间 ISO 8601

java - Java中如何读取多种语言的文件?

c# - 编译器如何推断委托(delegate)示例中的类型?

c# - 如何使用新的 Azure.Storage.Blobs 命名空间仅获取 blob 中的文件夹名称

.net - Ajax 调用 onbeforeunload 不适用于 Firefox - 适用于 IE

c# - 用作参数时无法推断 Action 委托(delegate)的返回类型

ios - NSLocalizedString 数组