【问题标题】:Internationalization in VB.Net : Choosing the right structure typeVB.Net 中的国际化:选择正确的结构类型
【发布时间】:2011-01-08 06:27:34
【问题描述】:

我即将开始翻译我的 vb.net 应用程序,我不想使用 Visual Studio 提供的默认方法来执行此操作。我需要我的应用程序非常轻巧,并且它的大小几乎翻了一番才能使用资源选项。

因此,我打算使用诸如类之类的东西,其中每种语言都有一个实例。由于我不想将语言文件作为单独的文件分发(我宁愿将它们硬编码),我想找到一种简单的方法来检查类的每个字段是否都已初始化。我正在考虑类似接口之类的东西,我会在其中做这样的事情:

Public Interface Language
   Dim HelloMsg As String
   Dim GoodbyeMsg As String
End Interface

Public class English Implements Language
   HelloMsg = "Hello!"
   GoodbyeMsg = "Goodbye!"
End Class

这显然不是正确的方法(尽管我可以使用属性而不是 vars),但我想知道这是否是一种让编译器检查所​​有内容是否已翻译并在没有翻译时发出警告的方法。

无论如何,也许有更好的方法来处理这个问题?

非常感谢! CFP。

【问题讨论】:

    标签: vb.net class interface internationalization


    【解决方案1】:

    我决定使用一个加载翻译文件的单例类,它的方法循环遍历表单上的所有项目并即时翻译。有关更多详细信息,请参阅Create Synchronicity 源代码(更具体地说,TranslateControl in this code file

    【讨论】:

    • 虽然这种方法不允许自动检查未翻译的字符串。
    • 确实!谢谢你的平。固定。
    【解决方案2】:

    我不认为您应该仅仅因为您的应用程序的大小增加就放弃基于资源的本地化方法。事实上,它本可以从 100 Kb 增长到 200 Kb,但就是这样!它不会增长这么多。现在 200 Kb 也不算什么。

    所以我的建议是重新考虑并采用基于资源的路线。

    【讨论】:

    • 我当然可以,但是将我的应用程序大小增加那么多对我来说并不是一个真正的选择......无论如何,我不太喜欢基于资源的本地化选项。他们觉得它们过大,而且对我来说效率很低,特别是如果它们使得在没有 Visual Studio 的情况下编辑代码变得非常复杂。你知道没有这个功能我该如何管理吗?
    猜你喜欢
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    相关资源
    最近更新 更多