关于C#做多语言化,使用资源文件的问题(比较急)

问题描述

接到一急活,软件的英文化工作,这周末之前必须要测试完成的,我查了网上的资料,如果是窗体中的内容,比如说窗体的控件名之类的,可以利用窗体自带的资源文件.resx中,大致操作步骤:1.选中一个Form窗体,在属性编辑器中设置Localizable属性为true(默认为false)2.设置Language属性为default,这样就可以编辑默认情况下的文化设置3.然后在Form中添加你需要的基本控件,如按钮、菜单、标签等注意,一旦Form发生变化,VS.net就会自动生成<Form名称>.resx文件4.菜单布局完成后,重新设置Language属性为另一种语言,如中文(简体)5.Form中修改刚才添加的按钮、菜单和标签的属性,比如修改Text属性为中文文字,当然,文化设置并不局限于Text,还可以设置对齐方式、布局等,保存后,你会发现在Form窗体的cs文件下又多了一个<Form名称>.zh-CN.resx文件。因为程序中还有一些Messagebox中自定义的内容,本来我是想新建一个资源文件,把自定义的内容全部放在里面,但是类似直接访问ResourceManagerrm=newResourceManager("WinFormStrings.en.resx",Assembly.GetEntryAssembly())

提示找不到相应资源,如果我自定义一个类,资源文件取成和自定义类名一样,后面加上相应语言名,那么资源文件就属于这个类,用ResourceManagerrms=newResourceManager(typeObj);returnrms.GetString(id,ci);

用这种方式可以访问得到,我本来想把MessageBox一些自定义的内容全放在这里,但是后来图省事,就把它放到窗体的.resx文件中,昨天放完之后保存了,但是问题是:第一:今天打开后,发现全是空的,我知道一旦修改窗体控件的内容,哪怕是位置,它会自动生成一个对应语言下的resx文件,但是我并没有修改窗体内任何内容。第二:比如我改变了一个控件的文职,VS.net会自动遍历所有显示控件的可修改属性,根据当前Form窗体的Language设置,会把属性更改保存在特定语言的.resx文件中,但是最基本的控件的Name这些属性文件里都没有。对于自定义消息这种内容,放在哪个资源文件里访问比较合适,我目前想到的就是所有自定义消息得一个个添加到资源文件里,再通过id访问,也挺烦的,有没有什么简单的方法?比较急,有谁知道的,望赐教。

解决方案

解决方案二:
不一定要用resx你可以用ini文件,或者用xml文件来定义,操作起来也方便
解决方案三:
只能如你所想这么做,你不要觉得VS对UI的资源自动化做的这么方便,其实它也是靠一大堆代码来实现它的。我就是用不同的资源文件取实现自定义字符串的。两个自定义语言资源文件:定义强类型变量(部分代码):classCultureRes{///<summary>///为窗体更新资源文件内容///</summary>///<paramname="form"></param>publicstaticvoidApplyResources(Formform){ComponentResourceManagerrm=newSystem.ComponentModel.ComponentResourceManager(form.GetType());foreach(Controlctlinform.Controls){rm.ApplyResources(ctl,ctl.Name);form.ResumeLayout(false);form.PerformLayout();}//Captionrm.ApplyResources(form,"$this");}///<summary>///查找类似戴晓峰的本地化字符串。///</summary>publicstaticstringAuthor{get{switch(Thread.CurrentThread.CurrentCulture.Name){case"zh-CN":returnResourceZh.Author;break;case"en-US":returnResourceEn.Author;break;default:returnResourceZh.Author;break;}}}

调用:privatevoidbutton10_Click(objectsender,EventArgse){//切换到中文//使用资源文件强名访问的方式,支持多语言系统Thread.CurrentThread.CurrentCulture=newCultureInfo("zh-CN");Thread.CurrentThread.CurrentUICulture=newCultureInfo("zh-CN");CultureRes.ApplyResources(this);//改变设计期控件内容tbAuthor.Text=CultureRes.Author;//改变动态内容,且使用强名称调用MessageBox.Show(String.Format(CultureRes.判断某字段不能为空_Arg0,CultureRes.商品名称));}

解决方案四:
直接把中英文放到ini或者xml,做个切换按钮就行了,简单快速

时间: 2024-10-24 02:05:41

关于C#做多语言化,使用资源文件的问题(比较急)的相关文章

Android国际化资源文件自动化生成工具

一.工具起源            如果在做一个产品的过程当中,可能会涉及到多个apk的开发,而且要求实现多国语言.而这些apk可能会由多人分工共同完成.但如果这样的话,每个人都需要整理各自apk所要显示的文字交给专人来翻译.专人负责收集和翻译文字,翻译完了之后再交给每个开发者.比如这个产品中的所有apk都需要支持10国语言,也就是说每个开发人员,要拿着翻译好的文字,在各自负责的项目中创建这10个语种的资源文件,并且将这10个语种的文字依次放入到不同语种目录下的资源文件中.而且当apk写完后,后

区域-C# 资源文件Resource .resx文件多语言无法编译。

问题描述 C# 资源文件Resource .resx文件多语言无法编译. 如图,只有默认资源ISOResour.resx能够附加进DLL中,而zh-CN,zh-TW,都无法编译进DLL resx的路径应该是正确的,因为默认的资源文件是能够读取的,只是加了CultureInfo进去了过后 就会报错, 未能找到任何适合于指定的区域性或非特定区域性的资源.------ 解决方案 这个资源有专门的文件路径存放的.如图,右键项目

asp.net web页面元素的多语言化(多国语化)实现分享_实用技巧

开发的一些系统,经常要求支持多语言(例如日文,英文等),以前大部分做法是创建一个资源文件, 将每一个标签,按钮等标题文字预先用各种语言设定保存好, 在程序中根据选择的语言来显示对应文字. 这样做的缺点是如果每次改动或增加一个控件,都需要程序开发人员刻意做多语言对应, 如果用户想要改某些标题的描述,还需要开发人员改动资源文件并替换到程序发布目录. 经过调查实验,最终想了一个办法来较好地对应此问题: 在每一个web页面,设定一个只有最高级的管理权限才能看到的一个按钮(例如叫"设定"), 来

从资源文件里加载文件(C#)

加载 1.概述: 资源文件很早就有了,在.Net时代里这个东西也不算稀奇,在进行多国语言化的时候通常把不同翻译的文字存放到资源包里.以前资源文件除了放字符串以外,还可以放文件.不过在C#的工程里面,资源管理面板是空的(vc++工程里资源面板可以使用),无法直接编辑资源属性,不过每个WinForm都会带一个.resx的文件,这个文件就是WinForm的资源文件.如果通过添加新项目的方法,给工程里添加资源文件的话,产生的也是.resx文件.估计.resx文件是.net给c#新设计的资源文件格式..r

专为VB制做的多语言软件开发工具,可以轻松完成对可视界面的多语言化.

专为VB制做的多语言软件开发工具,可以轻松完成对可视界面的多语言化,您只需要制做语言包母板后翻译复制该母板即可.点这里下载示例工程. 界面介绍如下: 启动图标:点这里将启动该程序. 程序将向您的代码中添加以下代码,以便您访问语言包: API:  Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplic

iPhone开发中的多语言化

之前写过一篇关于Qt多语言化的文章:http://blog.csdn.net/jasonblog/article/details/5445191. 虽然在进行iOS开发的过程中,可以在Xcode里直接使用中文字符串,但总觉得有点奇怪和不舒服. 加上用户可以在iPhone设置里选择不同的语言环境,因此采取国际化手段是个不错的选择. 最重要的是,工作量不大,尤其是刚开始进行项目时就考虑到了. 这里讨论最基本的文案多语言化. 首先,为项目新增资源文件Strings File,命名为"Localizab

在.NET中读取嵌入和使用资源文件的方法_C#教程

Dotnet中嵌入资源(位图.图标或光标等)有两种方式,一是直接把资源文件加入到项目,作为嵌入资源,在代码中通过Assembly的GetManifestResourceStream方法获取资源的Stream.另一种方法是在项目中加入. resx资源文件,在资源文件中添加资源,由ResourceManager类统一管理其中的资源. 下面分别详述这两种方法 一.使用GetManifestResourceStream读取嵌入资源 1.加入资源文件 直接把要嵌入到程序集的资源文件加入到项目中,可以加在项

系统多种资源文件代码示例

示例 (一).功能  当一个系统有了一定规模,可能要销售到国外其它国家,这时候要实现多种资源文件.  本代码示例将介绍怎样实现: 一个系统同时具有简体,繁体,英文等不同资源文件.  实现原理:   将多资源文件存储在多个*.txt文件(例如CN.txt En.txt等)中,程序根据当前当前浏览器  语言设置 读取相应的资源文件(二).具体步骤如下  1. 创建一个资源文件     a.建立一个记事本文件: a.txt,并在里面写入:  _name=姓名       b.选"文件"-&g

深入剖析Asp.net资源文件

asp.net 一.资源文件的定义 简单点的说法就是程序中可以使用的数据,象:字符串,图片或二进制数据等等,实际上可以包含任何类型的文件. 资源文件可以有多个语言版本,这样在开发全球化应用程序时就很重要.这个特性是通过System.Resources空间下的ResourceManager类来完成需要在什么时候调用那个版本的.在VS.NET中将一个文件的属性设置为Embedded Resource就可以使资源被嵌入到Assembly中了. 二.资源文件包含那些类型? System.Resource