我希望我的 C# (winforms) 应用程序是多语言的。我的想法是:
- 我会将我的翻译放在一些文本文件中,每个“句子”或短语都有唯一的 ID(整数)
- 在应用程序启动时,我将遍历我的应用程序中所有表单上的所有控件(我想这应该在每个表单的“加载”事件处理程序中完成)并且我将测试它的类型的控制
- 即,如果它是一个按钮或菜单项,我将读取它的默认“文本”属性,在一个文本文件中找到这个短语,读取它的唯一 ID,然后通过这个 ID 将翻译的短语定位在(其他)文本文件中
- 然后我将用翻译的短语覆盖控件的“文本”属性
这使我能够拥有单独的文本文件,其中包含每种语言的短语(将来易于维护单独的翻译 - 只有 1 个 txt 文件)
- 如果有更好/更容易/更快/更“专业”的方法来实现这一点,我想听听你的意见。
- 我应该使用什么格式的翻译文本文件(纯文本、XML、ini ......) - 它应该是人类可读的。我不知道在 C# 中查找 XML 中的短语是否比在纯文本文件中逐行搜索给定的短语/字符串要快...?
- 编辑- 我希望用户(社区)能够在没有我的交互的情况下为他们将我的应用程序翻译成他们的母语(这意味着微软的资源已经退出了游戏)
非常感谢您提前。
已关闭 - 我的解决方案: 看起来我停留在我原来的概念上 - 每个短语都将位于纯文本文件的单独行中 - Unicode 编码(以及行开头的 ID)。我也在考虑删除 ID 并只使用行号,但它需要高级文本编辑器(记事本不显示行号),如果有人不小心点击了“删除行”的快捷方式并且没有注意到,整个应用程序会疯了 :)
//sample of my translation text file for one language
0001:Text of my first button
0002:Text of my first label
0003:MessageBox title text
...etc etc