首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多表单全球化

多表单全球化
EN

Stack Overflow用户
提问于 2011-02-08 04:33:03
回答 2查看 1.1K关注 0票数 2

我们有一个大型的100+表单解决方案,这些表单都有标签和按钮等……用英语。

所有的表单上都有共同的文本,比如至少有20个表单上有"Job“这个词。

我们正在寻找一个不同的市场,并要求所有的形式都在不同的语言。在研究了.NET全球化技术之后,我们发现标准方法并不适合我们;该方法是一种编码的解决方案。我们希望避免复制

代码语言:javascript
复制
button.Text = ResourceManager.getString("job");`

在20+表单中,我们正在寻找是否有更简单的解决方案。(我们在应用程序启动时设置区域性)

我们有一个想法是resx (资源文件),我们可以将其绑定到表单,然后在该资源文件中选择一个值来绑定到标签或按钮文本。据我们所知,我们找不到这样一个简单的解决方案。

我们知道我们可以在每个表单后面创建.resx文件,但是如果我们想在未来包含更多的语言,那么这样做的开销太大了--而且当“工作”这个词出现在多个表单上时,也会出现不必要的重复。

是否存在这样的解决方案:我们可以将资源文件(或Satellite Assembly )绑定到每个表单/组件(没有代码),然后只选择我们想要显示的值?或者,是否有类似的替代解决方案?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-22 04:40:19

最后,由于项目的规模,我们不得不使用编码解决方案。

我们添加了一个新的解决方案,这个解决方案只包含资源文件,其中包含我们使用的所有语言以及一个默认集(英语)。

在每个页面的构造函数中,我们使用

代码语言:javascript
复制
job_label.Text = LanguageResources.job; //example to display "job" on a label

因为Visual Studio为资源文件创建了强类型的类,所以我们可以直接调用资源文件LanguageResources并访问其中的任何字段。然后,我们创建了LanguageResources.de-DE.resx,并用所有与英语版本相同的键和德语值填充它。

多亏了.NET的全球化技术,我们可以在.config文件中设置语言,这样当应用程序运行时,它就可以检查需要显示哪种语言并访问适当的资源文件。如果该语言无法识别,则默认为英语。

票数 0
EN

Stack Overflow用户

发布于 2011-02-08 04:44:24

有一种方法可以非常简单地做到这一点。首先创建一个列表,其中包含您希望翻译的所有表单上的所有控件的Text属性(这样您就会有"OK“、"Cancel”、"Job“、"Delete”等)。然后找人将每个术语翻译成您希望支持的任何语言(并为每种支持的语言单独添加翻译)。然后在你的应用程序中嵌入/包含这个列表(作为CSV、数据库、XML文件或任何你喜欢的文件)。

在每个窗体的Load事件中,调用一个方法来迭代窗体上的每个控件(递归地,这样您也可以选取容器控件上的任何控件),在转换列表中查找控件的Text属性,并将文本更改为翻译值(基于您在其他地方确定和/或设置的当前语言)。

为此,我一直使用Excel电子表格,因为它很容易嵌入,也很容易发送以添加其他术语和/或其他语言。

在.Net中使用内置的全球化特性是一件很痛苦的事情,而且通常需要程序员精通所支持的语言。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4926223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档