.NET程序实现多语言

首先建立.NET资源文件.resx

langs.en-us.resx

<?xml version="1.0" encoding="gb2312" ?>
<root>
 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xsd:element name="root" msdata:IsDataSet="true">
   <xsd:complexType>
    <xsd:choice maxOccurs="unbounded">
     <xsd:element name="data">
      <xsd:complexType>
       <xsd:sequence>
        <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
        <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
       </xsd:sequence>
       <xsd:attribute name="name" type="xsd:string" />
       <xsd:attribute name="type" type="xsd:string" />
       <xsd:attribute name="mimetype" type="xsd:string" />
      </xsd:complexType>
     </xsd:element>
     <xsd:element name="resheader">
      <xsd:complexType>
       <xsd:sequence>
        <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
       </xsd:sequence>
       <xsd:attribute name="name" type="xsd:string" use="required" />
      </xsd:complexType>
     </xsd:element>
    </xsd:choice>
   </xsd:complexType>
  </xsd:element>
 </xsd:schema>
 <resheader name="ResMimeType">
  <value>text/microsoft-resx</value>
 </resheader>
 <resheader name="Version">
  <value>1.0.0.0</value>
 </resheader>
 <resheader name="Reader">
  <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 </resheader>
 <resheader name="Writer">
  <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 </resheader>
 <data name="frm-caption">
  <value>English</value>
 </data>
</root>

langs.zh-Chs.resx

<?xml version="1.0" encoding="gb2312" ?>
<root>
 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xsd:element name="root" msdata:IsDataSet="true">
   <xsd:complexType>
    <xsd:choice maxOccurs="unbounded">
     <xsd:element name="data">
      <xsd:complexType>
       <xsd:sequence>
        <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
        <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
       </xsd:sequence>
       <xsd:attribute name="name" type="xsd:string" />
       <xsd:attribute name="type" type="xsd:string" />
       <xsd:attribute name="mimetype" type="xsd:string" />
      </xsd:complexType>
     </xsd:element>
     <xsd:element name="resheader">
      <xsd:complexType>
       <xsd:sequence>
        <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
       </xsd:sequence>
       <xsd:attribute name="name" type="xsd:string" use="required" />
      </xsd:complexType>
     </xsd:element>
    </xsd:choice>
   </xsd:complexType>
  </xsd:element>
 </xsd:schema>
 <resheader name="ResMimeType">
  <value>text/microsoft-resx</value>
 </resheader>
 <resheader name="Version">
  <value>1.0.0.0</value>
 </resheader>
 <resheader name="Reader">
  <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 </resheader>
 <resheader name="Writer">
  <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 </resheader>
 <data name="frm-caption">
  <value>中文</value>
 </data>
</root>

运行.NET资源文件生成器

resgen langs.en-us.resx

resgen langs.zh-Chs.resx

生成lang.en-us.resources和lang.zh-Chs.resources

将2个文件分别复制到bin/debug/en-us和bin/debug/zh-chs目录里

代码写:

代码写:

public class main
 {
  

  [STAThread]
  static void Main() {
   Application.Run(new langs.langsFrm("en-us"));
  }
 }

窗体程序中:

窗体程序中:

public langsFrm(string culture){
   rm=ResourceManager.CreateFileBasedResourceManager("langs."+culture,Application.StartupPath+@"/"+culture,null);
   InitializeComponent();

  this.Text=rm.getString("frm-caption");
  }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现语言接口的方法有很多种,以下是一种常见的做法: 1. 创建资源文件:在 Visual Studio 中,可以右键单击项目,选择“添加”->“新建项”,然后选择“资源文件”来创建一个资源文件。资源文件的名称通常是“Resources.resx”,此时可以在资源文件中添加需要本地化的字符串,例如“Hello World”等。 2. 添加语言资源:在资源文件中,可以通过添加不同的语言资源来支持不同的语言。例如,可以通过右键单击资源文件,选择“添加”->“现有项”,然后选择“资源文件”来添加一个新的语言资源文件。资源文件的名称应该包含语言和区域信息,例如“Resources.zh-CN.resx”表示中文(中国)的资源文件。 3. 在代码中使用资源文件:在代码中,可以使用 ResourceManager 类和 CultureInfo 类来访问资源文件中的字符串。例如,可以使用以下代码来获取“Hello World”字符串的本地化版本: ``` var cultureInfo = CultureInfo.CurrentUICulture; var resourceManager = new ResourceManager(typeof(Resources)); var helloString = resourceManager.GetString("HelloWorld", cultureInfo); ``` 这将根据当前 UI 文化(即用户选择的语言和区域设置)获取“Hello World”字符串的本地化版本。 4. 在用户界面中使用本地化字符串:最后,在用户界面中使用本地化字符串,可以通过将其绑定到控件属性或者在代码中直接使用。例如,在 ASP.NET Web 应用程序中,可以使用以下代码在页面中显示本地化字符串: ``` <%# Resources.HelloWorld %> ``` 在 WPF 或 Windows Forms 应用程序中,可以将本地化字符串绑定到控件属性,例如 TextBlock.Text 或 Label.Text。 以上就是一个简单的多语言接口的实现方法。需要注意的是,在使用多语言接口时,应该尽量避免硬编码字符串,而是应该使用资源文件来管理本地化字符串。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值