在项目中经常需要实现多语言其中包括webpart的属性也需要。那么如何实现呢?

首先需要资源文件,利用资源文件实现语言的翻译,如下图:

创建好资源后,下面我们来实现webpart属性的多语言。方法代码如下:

   1: using System;

   2: using System.Collections.Generic;

   3: using System.Text;

   4: using System.Globalization;

   5: using System.Web;

   6: using System.Web.UI.WebControls.WebParts;

   7: using System.ComponentModel;

   8: //****************************************************************

   9: //编制人:XX

  10: //编制作用:本地化WebPart的Category、WebDisplayName 和 WebDescription 属性

  11: //编制时间:2013-05-07

  12: //编制单位:XX

  13: //****************************************************************

  14: namespace TCL.EP.SPCommon

  15: {

  16:     #region//WebPart类别本地化

  17:     public sealed class LocalizedCategoryAttribute : CategoryAttribute

  18:     {

  19:         public LocalizedCategoryAttribute(string category)

  20:             : base(category)

  21:         { }

  22:  

  23:         // Override this method to return values from the webpart's resource file.

  24:         protected override string GetLocalizedString(string value)

  25:         {

  26:             return LocalizedUtility.GetLocalizedString(value, CultureInfo.CurrentUICulture.LCID);

  27:         }

  28:     }

  29:     #endregion

  30:  

  31:     #region//WebPart显示名称本地化

  32:     public sealed class LocalizedWebDisplayNameAttribute : WebDisplayNameAttribute

  33:     {

  34:         bool m_isLocalized;

  35:  

  36:         public LocalizedWebDisplayNameAttribute(string displayName)

  37:             : base(displayName)

  38:         { }

  39:  

  40:         // Override this property to return values from the webpart's resource file.

  41:         public override string DisplayName

  42:         {

  43:             get

  44:             {

  45:                 if (!m_isLocalized)

  46:                 {

  47:                     this.DisplayNameValue = LocalizedUtility.GetLocalizedString(base.DisplayName, CultureInfo.CurrentUICulture.LCID);

  48:                     m_isLocalized = true;

  49:                 }

  50:                 return base.DisplayName;

  51:             }

  52:         }

  53:     }

  54:     #endregion

  55:  

  56:     #region//WebPart描述本地化

  57:     public sealed class LocalizedWebDescriptionAttribute : WebDescriptionAttribute

  58:     {

  59:         bool m_isLocalized;

  60:  

  61:         public LocalizedWebDescriptionAttribute(string description)

  62:             : base(description)

  63:         { }

  64:  

  65:         // Override this property to return values from the webpart's resource file.

  66:         public override string Description

  67:         {

  68:             get

  69:             {

  70:                 if (!m_isLocalized)

  71:                 {

  72:                     this.DescriptionValue = LocalizedUtility.GetLocalizedString(base.Description, CultureInfo.CurrentUICulture.LCID);

  73:                     m_isLocalized = true;

  74:                 }

  75:                 return base.Description;

  76:             }

  77:         }

  78:     }

  79:     #endregion

  80: }

调用例子如下:

 

   1: /// <summary>

   2:       /// 图片打开的URL

   3:       /// </summary>

   4:       [WebBrowsable(true)]

   5:       [LocalizedWebDisplayName("TCL.WebPartAttribute.PhotoImageUrl")]

   6:       [LocalizedWebDescription("TCL.WebPartAttribute.PhotoImageUrl")]

   7:       [Personalizable(PersonalizationScope.Shared)]

   8:       [LocalizedCategory("TCL.WebPartAttribute.SelfName")]

   9:       public string PhotoImageUrl { get; set; }

sharepoint2010如何本地化WebPart的Category、WebDisplayName 和 WebDescription 属性的更多相关文章

  1. 给category添加基本数据类型属性

    给category添加基本数据类型属性 说明 通常,我们添加属性都是通过对象扩展来实现的,其实,我们也可以用runtime来添加基本数据类型的属性 源码 // // UIView+AnimationP ...

  2. iOS category中的所谓属性 和 从xib初始化对象的方法 以及类扩展

    今天在编码时遇到以下代码 @interface UITextField (TCCustomFont) @property (nonatomic, copy) NSString* fontName; @ ...

  3. category类别中添加属性

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 } p.p2 { margin: 0.0px 0. ...

  4. SharePoint 2013 图文开发系列之WebPart

    这是我们介绍SharePoint开发入门的第一篇,在这一篇里,我们会介绍SharePoint开发的几个关键物理路径,一些开发技巧和最基础的WebPart开发. 开发工具 在SharePoint 201 ...

  5. Sharepoint 2010 之 WebPart

    转:http://blog.csdn.net/bestbadgod/article/details/6895542 Sharepoint系列的博客,都是我个人自学过程中的点滴的积累,毕竟没做过C#及A ...

  6. SharePoint 2013 图文开发系列之可视化WebPart

    有了WebPart开发的基础,再进行可视化WebPart开发,就容易多了.创建和开发过程,两者非常相似,下面,我们简单介绍下可视化WebPart的开发. 1.添加新项目,选择SharePoint 20 ...

  7. 【原】iOS动态性(一):动态添加属性的方法——关联(e.g. 向Category添加属性)

    想到要如何为所有的对象增加实例变量吗?我们知道,使用Category可以很方便地为现有的类增加方法,但却无法直接增加实例变量.不过从Mac OS X v10.6开始,系统提供了Associative ...

  8. Objective-C :Category

    Category 引入 在日常的开发中,可能会碰到这样的需求:给某个类增加方法.比如说,需要给NSString类增加一个打印的方法.当然,我们可以新建一个类比如TestString,并继承NSStri ...

  9. iOS动态性:动态添加属性的方法——关联(e.g. 向Category添加属性)

    想到要如何为所有的对象增加实例变量吗?我们知道,使用Category可以很方便地为现有的类增加方法,但却无法直接增加实例变量.不过从Mac OS X v10.6开始,系统提供了Associative ...

随机推荐

  1. ISTool5.3.1汉化版使用教程

    ISTool是帮助你创建由Jordan Russell制作的Inno Setup编译器脚本的工具.Inno是一个出色的编译器,即使对于某些专业的安装制作程序,它唯一的缺点就是它的脚本必须手动编写. 这 ...

  2. 轻松自动化---selenium-webdriver(python) (十二)

    本节重点: l 键盘按键用法 l 键盘组合键用法 l send_keys() 输入中文运行报错问题 键盘按键键用法: #coding=utf-8 from selenium import webdri ...

  3. Anliven - 如何逼疯你的小伙伴

    如果你也曾为某人某事"发疯发狂,懵逼连连". . 无礼:随意牵扯他人,不了解实际情况,却对他人工作横加点评甚至是指责. 无知:自我感觉良好,自己总是最正确最合理的,除了自己,没人会 ...

  4. 推荐20个很有帮助的 Web 前端开发教程

    在平常的搜索中,我碰到过很多有趣的信息,应用程序和文档,我把它们整理在下面这个列表.这是收藏的遇到的有用内容的一个伟大的方式,可以在你需要的时候方便查阅.相信你会在这个列表中发现对你很有用的资料. 您 ...

  5. CentOS7 Nexus安装

    CentOS7 Nexus安装 CentOS7 Nexus安装 Download 从Nexus下载nexus-2.11.2-03-bundle.tar.gz Install 安装 上传RPM文件到/t ...

  6. 基于Mono.Cecil的静态注入

    Aop注入有2种方式:动态注入和静态注入,其中动态注入有很多实现了 动态注入有几种方式: 利用Remoting的ContextBoundObject或MarshalByRefObject. 动态代理( ...

  7. Asp.net 高性能 Sqlite ORM 框架之 sqliteSugar

    一.介简 easyliter框架的升级版本,并且正式命名为SqliteSugar框架,另外Sugar系列还有 MySql和MsSql版本,Oracle版本待开发中(因为客户端太大一直在忧郁当中) 用S ...

  8. 主成分分析(PCA)的一种直观理解

    源自知乎的一个答案,网上很多关于PCA的文章,不过很多都只讲到了如何理解方差的投影,却很少有讲到为什么特征向量就是投影方向.本文从形象角度谈一谈,因为没有证明,所以不会严谨,但是应该能够帮助形象理解P ...

  9. 【Swift学习】Swift编程之旅---析构方法(十九)

    在一个类的实例内存被释放之前,析构方法被立即调用.使用deinit关键字来声明析构方法,类似于构造方法用init来声明.析构方法只适用于类类型.   析构方法原理 Swift会自动释放不再需要的实例以 ...

  10. 【原创】Kakfa serializer包源代码分析

    这个包很简单,只有两个scala文件: decoder和encoder,就是提供序列化/反序列化的服务.我们一个一个说. 一.Decoder.scala 首先定义了一个trait: Decoder[T ...