WP8里dll类库(SDK)实现多语言多主题

近日在做一个sdk项目,因为要实现多语言切换,单独类库多语言这方面的实现不是很多,故整理如下。

1.添加AppResource.resx(英文)和AppResource-zh-CN.resx

假设我们默认语言是英文,添加这两个文件。两个资源文件中均添加 UserCenter_Title 字段,并给其赋值。注意访问修饰符设置成public。

如果是要实现多主题的话,可相应添加图片等资源。

2.添加LocalizedStrings类

继承INotifyPropertyChanged并实现,最终代码可能如下


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

public class AdeasygoLocalizedStrings : INotifyPropertyChanged

    {

        private static AppResource _localizedResources = new AppResource();

        public AppResource AdeasygoLocalizedResource

        {

            get

            {

                return _localizedResources;

            }

            set

            {

                _localizedResources = value;

                NotifyPropertyChanged("AdeasygoLocalizedResource");

            }

        }

        public event PropertyChangedEventHandler PropertyChanged;

        public void NotifyPropertyChanged(string propertyName)

        {

            if (this.PropertyChanged != null)

            {

                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));

            }

        }

    }

3.修改AppResource.Designer.cs

这一步非常重要,添加ResourceManager属性的Set方法,以支持语言的动态切换:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

/// <summary>

        ///   返回此类使用的缓存的 ResourceManager 实例。

        /// </summary>

        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]

        public static global::System.Resources.ResourceManager ResourceManager {

            get {

                if (object.ReferenceEquals(resourceMan, null)) {

                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Adeasygo.Community.Sdk.Resources.AppResource", typeof(AppResource).Assembly);

                    resourceMan = temp;

                }

                return resourceMan;

            }

            set { resourceMan = value; }

        }

4.控制语言(主题)切换


1

2

3

4

5

6

7

8

9

10

11

12

13

14

public static void Init(string lang = "en")

        {

            ResourceManager resManager;

            switch (lang)

            {

                case "zh":

                    resManager = new ResourceManager("Sdk.Resources.AppResource-zh-CN", Assembly.Load("Sdk"));

                    break;

                default:

                    resManager = new ResourceManager("Sdk.Resources.AppResource", Assembly.Load("Sdk"));

                    break;

            }

            AppResource.ResourceManager = resManager;

        }

如此就实现了类库中动态的语言切换,图像资源等,也可以定义在resx中实现根据语言变化或者多主题切换。

本文固定链接: http://www.liubaicai.net/index.php/archives/425

欢迎访问:http://www.liubaicai.net/ 寻找更多

时间: 2024-08-07 12:16:58

WP8里dll类库(SDK)实现多语言多主题的相关文章

Windows.Andy.Code4App.dll Win8.1/WP8.1通用类库@ver1.0.1

在上篇 Windows.Andy.Code4App.dll  Win8.1/WP8.1通用类库@ver1.0.0 已经对Win8.1和WP8.1部分扩展通用类库做了说明,这篇继续对通用类库做扩展.写的不好,还请各路大神多多指教~ Windows.Andy.Code4App  Win8.1/WP8.1通用类库@ver1.0.1项目结构: 比较上个1.0.0可以看到多了以下扩展:Async(异步类). Converter(转换类).Device(设备类).Encrypt(加密类).Helper(帮助

【WP8】关于类库本地化问题

WPToolkit中的ToggleSwitch开关控件是比较常用的控件,之前在做的的时候遇到一个问题,默认语言改为中文,手机系统语言也为中文,但是开关状态无法应用本地化的语言库,开关状态总是显示On/Off,而产品要求显示中文的开关 通过Nuget下载下来的WPToolkit包中是包含中文的语言的 经过一番摸索,终于找到原因了 在中文版的VS开发环境中,生成的项目默认是中文语言的zh-CN,定义在 AssemblyInfo.cs 文件中 我们需要把项目的默认语言改为英文 en-US,才能让项目自

用Qt生成dll类库及调用方法

空白工程新建DLL后,将DLL和LIB文件放入需要调用的"指定目录" 项目->属性->连接器->常规->附加库目录->添加"指定目录" 项目->属性->连接器->输入->附加依赖项->添加"LIB文件" 添加头文件到项目中,则DLL可用! VC6.0: 使一个项目编译生成DLL库而不生成可执行文件: 删除main()方法: 将.pro项目文件中的TEMPLATE = app改为TEMPL

PB调用C#编写的Dll类库

在c# 中编写com组件,供PB调用实例 前言:c#中写的dll直接是不能被pb调用的,只有写成com组件才可以调用,所以用c#写dll时要注意. c#中新建类库 类库类型为通用类库,项目名为AddCom 1.配置:右键点击解决方案资源管理器中的AddCom,选择“属性”,选择“应用程序”->“程序集信息”,勾选“使程序集COM可见”,然后点击“生成”,选择“为COM互操作注册” 2.打开AssemblyInfo.cs文件,设置[assembly: ComVisible(true)],如果不改则

R语言︱LDA主题模型——最优主题...

R语言︱LDA主题模型--最优主题...:https://blog.csdn.net/sinat_26917383/article/details/51547298#comments 原文地址:https://www.cnblogs.com/yijiaming/p/10148427.html

Windows.Andy.Code4App.dll Win8.1/WP8.1通用类库@ver1.0.0

直接入题! Win8.1和WP8.1眼下已经渐渐融为一体,WP8.1不断向Win8.1靠拢,虽然一些方法上WP8.1和Win8.1不同(ps:WP8.1和Win8.1的不同之处),但大部分还是相同的. 为了方便能够在WP8.1和Win8.1调用同样的方法,减少不必要的麻烦,现将我个人总结的一些简单的方法封装一下.代码很简单,不妥之处,还请各路大神多多指教~ Windows.Andy.Code4App.dll项目工程结构如下: 一.Extension: 1.CommandEx: 主要是使用依赖属性

wpf窗体项目 生成dll类库文件

我想把一个wpf应用程序的输出类型由windows应用程序改为类库该怎么做,直接在项目属性里改的话报错为 库项目文件无法指定applicationdefinition属性 wpf窗体项目运行之后bin/debug下面只有.exe文件,现在想要生成dll文件供其他第三方引用的实现方法. 1.删除App.xaml文件 2.将项目属性--应用程序--输出类型 改为类库. 下面可以没有,经测试,上面两步就可以实现,下面的内容是其他文章中的内容,备用. 打开解决方案中的 Properties目录下的 As

C++调用C#dll类库中的方法(非显性COM)

一般在网上搜C++如何调用C#的函数,出来的结果都是做成COM组件,但是这种方法dll安装麻烦,需要注册COM组件,需要管理员权限,调试麻烦,经常需要重启机器,反正有诸多不便. 然后在看<CLR via C#>时看到一种方法,可以免去这种苦恼.少废话,先上代码. C#类库的: namespace ClassLibrary1 { public class Class1 { public static int pwzMethodName(String pwzArgument) { //Thread

js调DLL类库中的方法实现(非com组件形式)

1.首先,创建一个Web空项目 2.添加一个html或aspx页面 3.页面代码如所示: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><