首先为假设有一个应用程序CAStudy,接着右键添加一个资源文件Resource1.resx

Resource1.resx里面如下:

Main函数如下:

static void Main()
{
    ResourceManager resourceManager = new ResourceManager(
        "CAStudy.Resource1",
        Assembly.GetExecutingAssembly());

Console.WriteLine("String1 : " + resourceManager.GetString("String1"));
    Console.WriteLine("String1 : " + Resource1.String1);
    Console.ReadLine();
}

使用的ResourceManager构造函数如下:

[SecuritySafeCritical]
public ResourceManager(string baseName, Assembly assembly);

在应用程序编译的时候Resource1.resx就会被编译成Resource1的一个类。所以如果你不知道baseName是什么,也可以这样:

ResourceManager resourceManager = new ResourceManager(
                Resource1.ResourceManager.BaseName,
                Assembly.GetExecutingAssembly());

或者你查看IL代码,可以发现如下:

运行结果如下:

假设我们要支持 英语-美国(en-US) 的人来访问的话:

那么我们可以复制Resource1.resx ,从而生成Resource1.en-US.resx。

注意除了中间多出来了en-US之外,其他都相同,

当然,如果你需要支持中文-台湾,那么可以生成Resource1.zh-TW.resx.

Resource1.en-US.resx内容如下:

可以看到,现在的是Hello。

使用的时候只需要修改

Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

为什么修改 CurrentUICulture 就可以了呢?

// 摘要:
// 获取或设置资源管理器使用的当前区域性以便在运行时查找区域性特定的资源。
public CultureInfo CurrentUICulture { get; set; }

完整的Main函数如下:

static void Main()
{
ResourceManager resourceManager = new ResourceManager(
Resource1.ResourceManager.BaseName,
Assembly.GetExecutingAssembly()); Console.WriteLine("String1 :" + resourceManager.GetString("String1"));
Console.WriteLine("String1 :" + Resource1.String1); Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
Console.WriteLine("String1 :" + resourceManager.GetString("String1"));
Console.WriteLine("String1 :" + Resource1.String1); Console.ReadLine();
}

运行结果如下:

http://www.jb51.net/article/36772.htm

深入Resource实现多语言支持的应用详解的更多相关文章

  1. [转]C语言字节对齐问题详解

    C语言字节对齐问题详解 转载:https://www.cnblogs.com/clover-toeic/p/3853132.html 引言 考虑下面的结构体定义: typedef struct{ ch ...

  2. R语言服务器程序 Rserve详解

    R语言服务器程序 Rserve详解 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到 ...

  3. C语言解决约瑟夫问题详解的代码

    将开发过程中比较重要的一些内容做个收藏,下面的内容是关于C语言解决约瑟夫问题详解的内容,希望能对码农有帮助. #pragma once #include<vector> class PRO ...

  4. Linux C 语言之 Hello World 详解

    目录 Linux C 语言之 Hello World 详解 第一个 C 语言程序 程序运行原理 编译,链接 运行时 链接库 编译器优化 Hello World 打印原理 stdout, stdin 和 ...

  5. Android注解支持Support Annotations详解

    ###注解支持(Support Annotations)Android support library从19.1版本开始引入了一个新的注解库,它包含很多有用的元注解,你能用它们修饰你的代码,帮助你发现 ...

  6. Java语言Socket接口用法详解

    Socket接口用法详解   在Java中,基于TCP协议实现网络通信的类有两个,在客户端的Socket类和在服务器端的ServerSocket类,ServerSocket类的功能是建立一个Serve ...

  7. 【C语言】printf函数详解

    C语言printf函数详解 一.相关基础知识 请求printf()打印变量的指令取决于变量的类型,例如打印整数用%d符号,打印字符用%c符号,这些符号称为转换说明(conversion specifi ...

  8. 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战

    发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...

  9. C语言字节对齐问题详解

    引言 考虑下面的结构体定义: typedef struct{ char c1; short s; char c2; int i; }T_FOO; 假设这个结构体的成员在内存中是紧凑排列的,且c1的起始 ...

随机推荐

  1. 《The One!团队》第八次作业:ALPHA冲刺(二)

    项目 内容 作业所属课程 所属课程 作业要求 作业要求 团队名称 < The One !> 作业学习目标 (1)掌握软件测试基础技术.(2)学习迭代式增量软件开发过程(Scrum) 第二天 ...

  2. if语句:若边长小于等于0,则不进行计算;否则,计算正方形的面积

    #include<stdio.h>void main(){ float a; printf("Input the value:"); scanf("%f&qu ...

  3. [NgRx] NgRx Entity Adapter Configuration - Understanding sortComparer and selectId

    import { Course, compareCourses } from "../model/course"; import { EntityState, createEnti ...

  4. 洛谷 P1613 跑路 题解

    P1613 跑路 题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资,小A买了一个十分牛B的 ...

  5. lixuxmint系统定制与配置(2)-输入法

    小书匠Linux RIME的官网在这里 1.安装 刚开始是使用ibus-rime,后来使用过程感觉不舒服,就换回fcitx-rime.使用以下命令安装fcitx-rime sudo apt insta ...

  6. 《挑战30天C++入门极限》C++的iostream标准库介绍(1)

        C++的iostream标准库介绍(1) 我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所以讨论此标准库是有必要的,它与C语言的stdio库不同 ...

  7. Java ArrayList对象集合去重

    import java.util.ArrayList; import java.util.Iterator; public class StringSampleDemo { public static ...

  8. [Shell]Telnet反弹shell

    原作者:包子love 文章出处:黑白之道 今天给大家介绍两种telnet反弹shell的方法,相对于其他方式反弹shell要简单一点,可作为按需远程控制或留后门使用,希望可以帮助到大家. 前提条件:目 ...

  9. Kafka - 环境搭建

    一.概述 Kafka(官网地址)专为分布式高吞吐量系统而设计. Kafka往往工作得很好,作为一个更传统的消息代理的替代品. 与其他消息传递系统相比,Kafka具有更好的吞吐量,内置分区,复制和固有的 ...

  10. 项目管理工具_maven的配置

    <parent> <groupId>cn.itcast.maven</groupId> <artifactId>Parent</artifactI ...