共享一下“资源文件做多语言版本”的类
来源:互联网 发布:windows tcp 窗口大小 编辑:程序博客网 时间:2024/06/06 09:29
看了 杨云 发的”利用资源文件做多语言版本软件之乐趣”感觉,方法并不是很方便,共享一下我的 资源文件 类
其实这个 class 在 HtmlEditor3.1 中就曾经使用过
其实这个 class 在 HtmlEditor3.1 中就曾经使用过
sealed class Manager#region sealed class Manager
/**//// <summary>
/// 实现对资源文件(resx)的管理
/// <seealso cref="ResourceManager"/>
/// </summary>
/// <remarks>
/// 暂时用于获取全球化的语言信息资源<br/>
/// Create By lion <br/>
/// 2004-08-11 11:56 <br/>
/// Support .Net Framework v1.1.4322 <br/>
/// 调用时只要传递 Thread.CurentThread.CurentUICulutre 给那个类就可<br/>
/// </remarks>
/// <permission cref="System.Security.PermissionSet">public sealed</permission>
public sealed class Manager
{
/**//// <summary>
/// 资源文件列表
/// </summary>
/// <permission cref="System.Security.PermissionSet">private</permission>
private static Hashtable _resources;
/**//// <summary>
/// Manager 构造函数
/// </summary>
/// <permission cref="System.Security.PermissionSet">public</permission>
public Manager(){}
Function Custom#region Function Custom
/**//// <summary>
/// 确定区域性特定资源的访问
/// </summary>
/// <param name="resxName"> 资源名称</param>
/// <permission cref="System.Security.PermissionSet">internal</permission>
/// <example>
/// <code>
/// EnsureResources(resxName);
/// </code>
/// </example>
internal static void EnsureResources(string resxName)
{
if(_resources == null)
{
_resources = new Hashtable();
}
try
{
if(!_resources.ContainsKey(resxName))
{
_resources.Add(resxName, new ResourceManager("CSDN.AssemblyResourceManager." + resxName, typeof(CSDN.AssemblyResourceManager.Manager).Assembly));
}
}
catch{}
}
/**//// <summary>
/// 返回指定的 <see cref="Object"/> 资源的值
/// </summary>
/// <seealso cref="GetString"/>
/// <param name="resxName"> 资源名称</param>
/// <param name="name"> 要获取的资源名</param>
/// <returns> 针对调用方的当前区域性设置而本地化的资源的值。如果不可能有匹配项,则返回空引用(Visual Basic 中为 Nothing)。资源值可以为空引用 (Nothing)。</returns>
/// <permission cref="System.Security.PermissionSet"> public</permission>
/// <exception cref="ArgumentNullException"> name 参数为空引用(Visual Basic 中为 Nothing)。</exception>
/// <exception cref="MissingManifestResourceException"> 未找到可用的资源集,并且没有非特定区域性的资源。</exception>
/// <example>
/// 下面的代码演示如何调用 <see cref="GetObject"/>
/// <code>
/// string str = GetObject(resxName, name);
/// </code>
/// </example>
public static object GetObject(string resxName, string name)
{
return GetObject(resxName, name, null);
}
/**//// <summary>
/// 返回指定的 <see cref="Object"/> 资源的值
/// </summary>
/// <seealso cref="GetString"/>
/// <param name="resxName"> 资源名称</param>
/// <param name="name"> 要获取的资源名</param>
/// <param name="culture"> <see cref="System.Globalization.CultureInfo"/> 对象,它表示资源被本地化为的区域性。注意,如果尚未为该区域性本地化此资源,则查找将使用区域性的 Parent 属性回退,并在签入非特定语言区域性后停止。 如果该值为空引用(Visual Basic 中为 Nothing),则使用区域性的 CurrentUICulture 属性获取 CultureInfo</param>
/// <returns> 为指定区域性本地化的资源的值。如果不可能有“最佳匹配”,则返回空引用(Visual Basic 中为 Nothing)。</returns>
/// <permission cref="System.Security.PermissionSet">public</permission>
/// <exception cref="ArgumentNullException"> name 参数为空引用(Visual Basic 中为 Nothing)。</exception>
/// <exception cref="MissingManifestResourceException"> 未找到可用的资源集,并且没有非特定区域性的资源。</exception>
/// <example>
/// 下面的代码演示如何调用 <see cref="GetObject"/>
/// <code>
/// object o = GetObject(resxName, name, culture);
/// </code>
/// </example>
public static object GetObject(string resxName, string name, CultureInfo culture)
{
EnsureResources(resxName);
ResourceManager res = _resources[resxName] as ResourceManager;
if(res !=null)
return res.GetObject(name, culture);
return null;
}
/**//// <summary>
/// 返回指定的 <see cref="String"/> 资源的值
/// </summary>
/// <seealso cref="GetObject"/>
/// <param name="resxName"> 资源名称</param>
/// <param name="name"> 要获取的资源名。</param>
/// <returns> 针对调用方的当前区域性设置而本地化的资源的值。如果不可能有匹配项,则返回空引用(Visual Basic 中为 Nothing)。</returns>
/// <permission cref="System.Security.PermissionSet">public</permission>
/// <exception cref="ArgumentNullException"> name 参数为空引用(Visual Basic 中为 Nothing)。</exception>
/// <exception cref="MissingManifestResourceException"> 未找到可用的资源集,并且没有非特定区域性的资源。</exception>
/// <exception cref="InvalidOperationException"> 指定资源的值不是字符串。</exception>
/// <example>
/// 下面的代码演示如何调用 <see cref="GetString"/>
/// <code>
/// string str = GetString(resxName, name);
/// </code>
/// </example>
public static string GetString(string resxName, string name)
{
return GetString(resxName, name, null);
}
/**//// <summary>
/// 返回指定的 <see cref="String"/> 资源的值
/// </summary>
/// <seealso cref="GetObject"/>
/// <param name="resxName"> 资源名称</param>
/// <param name="name"> 要获取的资源名。</param>
/// <param name="culture"> <see cref="CultureInfo"/> 对象,它表示资源被本地化为的区域性。注意,如果尚未为该区域性本地化此资源,则查找将使用区域性的 Parent 属性回退,并在签入非特定语言区域性后停止。 如果该值为空引用(Visual Basic 中为 Nothing),则使用区域性的 CurrentUICulture 属性获取 CultureInfo</param>
/// <returns>为指定区域性本地化的资源的值。如果不可能有最佳匹配,则返回空引用(Visual Basic 中为 Nothing)。</returns>
/// <permission cref="System.Security.PermissionSet">public</permission>
/// <exception cref="ArgumentNullException"> name 参数为空引用(Visual Basic 中为 Nothing)。</exception>
/// <exception cref="MissingManifestResourceException"> 未找到可用的资源集,并且没有非特定区域性的资源。</exception>
/// <exception cref="InvalidOperationException"> 指定资源的值不是字符串。</exception>
/// <example>
/// 下面的代码演示如何调用 <see cref="GetString"/>
/// <code>
/// string str = GetString(resxName, name, culture);
/// </code>
/// </example>
public static string GetString(string resxName, string name, CultureInfo culture)
{
EnsureResources(resxName);
ResourceManager res = _resources[resxName] as ResourceManager;
if(res!=null)
return res.GetString(name, culture);
return string.Empty;
}
/**//// <summary>
/// 通知 ResourceManager 对所有 ResourceSet 对象调用 Close,并释放所有资源
/// </summary>
/// <remarks> 此方法将缩小正在运行的应用程序中的工作集。以后在此 <see cref="ResourceManager"/> 上的任何资源查找都和第一次查找一样花费时间,因为它需要再次搜索和加载资源。<br/>
/// 这在某些复杂线程处理方案中可能有用;在这种情况下创建新的 ResourceManager 不失为明智之举。<br/>
/// 此方法还可用于以下情况:由当前的 ResourceManager 打开的 .resources 文件必须被明确释放,而无需等到 ResourceManager 完全超出范围并对它进行垃圾回收。
///</remarks>
///<permission cref="System.Security.PermissionSet">public</permission>
public static void ReleaseAllResources()
{
if(_resources!=null)
{
//找到所有存在的 Resources 调用Close,并释放所有资源
for(int i=0;i< _resources.Count;i++)
{
ResourceManager rm = (ResourceManager)_resources[i];
rm.ReleaseAllResources();
}
}
}
#endregion
}
#endregion
/**//// <summary>
/// 实现对资源文件(resx)的管理
/// <seealso cref="ResourceManager"/>
/// </summary>
/// <remarks>
/// 暂时用于获取全球化的语言信息资源<br/>
/// Create By lion <br/>
/// 2004-08-11 11:56 <br/>
/// Support .Net Framework v1.1.4322 <br/>
/// 调用时只要传递 Thread.CurentThread.CurentUICulutre 给那个类就可<br/>
/// </remarks>
/// <permission cref="System.Security.PermissionSet">public sealed</permission>
public sealed class Manager
{
/**//// <summary>
/// 资源文件列表
/// </summary>
/// <permission cref="System.Security.PermissionSet">private</permission>
private static Hashtable _resources;
/**//// <summary>
/// Manager 构造函数
/// </summary>
/// <permission cref="System.Security.PermissionSet">public</permission>
public Manager(){}
Function Custom#region Function Custom
/**//// <summary>
/// 确定区域性特定资源的访问
/// </summary>
/// <param name="resxName"> 资源名称</param>
/// <permission cref="System.Security.PermissionSet">internal</permission>
/// <example>
/// <code>
/// EnsureResources(resxName);
/// </code>
/// </example>
internal static void EnsureResources(string resxName)
{
if(_resources == null)
{
_resources = new Hashtable();
}
try
{
if(!_resources.ContainsKey(resxName))
{
_resources.Add(resxName, new ResourceManager("CSDN.AssemblyResourceManager." + resxName, typeof(CSDN.AssemblyResourceManager.Manager).Assembly));
}
}
catch{}
}
/**//// <summary>
/// 返回指定的 <see cref="Object"/> 资源的值
/// </summary>
/// <seealso cref="GetString"/>
/// <param name="resxName"> 资源名称</param>
/// <param name="name"> 要获取的资源名</param>
/// <returns> 针对调用方的当前区域性设置而本地化的资源的值。如果不可能有匹配项,则返回空引用(Visual Basic 中为 Nothing)。资源值可以为空引用 (Nothing)。</returns>
/// <permission cref="System.Security.PermissionSet"> public</permission>
/// <exception cref="ArgumentNullException"> name 参数为空引用(Visual Basic 中为 Nothing)。</exception>
/// <exception cref="MissingManifestResourceException"> 未找到可用的资源集,并且没有非特定区域性的资源。</exception>
/// <example>
/// 下面的代码演示如何调用 <see cref="GetObject"/>
/// <code>
/// string str = GetObject(resxName, name);
/// </code>
/// </example>
public static object GetObject(string resxName, string name)
{
return GetObject(resxName, name, null);
}
/**//// <summary>
/// 返回指定的 <see cref="Object"/> 资源的值
/// </summary>
/// <seealso cref="GetString"/>
/// <param name="resxName"> 资源名称</param>
/// <param name="name"> 要获取的资源名</param>
/// <param name="culture"> <see cref="System.Globalization.CultureInfo"/> 对象,它表示资源被本地化为的区域性。注意,如果尚未为该区域性本地化此资源,则查找将使用区域性的 Parent 属性回退,并在签入非特定语言区域性后停止。 如果该值为空引用(Visual Basic 中为 Nothing),则使用区域性的 CurrentUICulture 属性获取 CultureInfo</param>
/// <returns> 为指定区域性本地化的资源的值。如果不可能有“最佳匹配”,则返回空引用(Visual Basic 中为 Nothing)。</returns>
/// <permission cref="System.Security.PermissionSet">public</permission>
/// <exception cref="ArgumentNullException"> name 参数为空引用(Visual Basic 中为 Nothing)。</exception>
/// <exception cref="MissingManifestResourceException"> 未找到可用的资源集,并且没有非特定区域性的资源。</exception>
/// <example>
/// 下面的代码演示如何调用 <see cref="GetObject"/>
/// <code>
/// object o = GetObject(resxName, name, culture);
/// </code>
/// </example>
public static object GetObject(string resxName, string name, CultureInfo culture)
{
EnsureResources(resxName);
ResourceManager res = _resources[resxName] as ResourceManager;
if(res !=null)
return res.GetObject(name, culture);
return null;
}
/**//// <summary>
/// 返回指定的 <see cref="String"/> 资源的值
/// </summary>
/// <seealso cref="GetObject"/>
/// <param name="resxName"> 资源名称</param>
/// <param name="name"> 要获取的资源名。</param>
/// <returns> 针对调用方的当前区域性设置而本地化的资源的值。如果不可能有匹配项,则返回空引用(Visual Basic 中为 Nothing)。</returns>
/// <permission cref="System.Security.PermissionSet">public</permission>
/// <exception cref="ArgumentNullException"> name 参数为空引用(Visual Basic 中为 Nothing)。</exception>
/// <exception cref="MissingManifestResourceException"> 未找到可用的资源集,并且没有非特定区域性的资源。</exception>
/// <exception cref="InvalidOperationException"> 指定资源的值不是字符串。</exception>
/// <example>
/// 下面的代码演示如何调用 <see cref="GetString"/>
/// <code>
/// string str = GetString(resxName, name);
/// </code>
/// </example>
public static string GetString(string resxName, string name)
{
return GetString(resxName, name, null);
}
/**//// <summary>
/// 返回指定的 <see cref="String"/> 资源的值
/// </summary>
/// <seealso cref="GetObject"/>
/// <param name="resxName"> 资源名称</param>
/// <param name="name"> 要获取的资源名。</param>
/// <param name="culture"> <see cref="CultureInfo"/> 对象,它表示资源被本地化为的区域性。注意,如果尚未为该区域性本地化此资源,则查找将使用区域性的 Parent 属性回退,并在签入非特定语言区域性后停止。 如果该值为空引用(Visual Basic 中为 Nothing),则使用区域性的 CurrentUICulture 属性获取 CultureInfo</param>
/// <returns>为指定区域性本地化的资源的值。如果不可能有最佳匹配,则返回空引用(Visual Basic 中为 Nothing)。</returns>
/// <permission cref="System.Security.PermissionSet">public</permission>
/// <exception cref="ArgumentNullException"> name 参数为空引用(Visual Basic 中为 Nothing)。</exception>
/// <exception cref="MissingManifestResourceException"> 未找到可用的资源集,并且没有非特定区域性的资源。</exception>
/// <exception cref="InvalidOperationException"> 指定资源的值不是字符串。</exception>
/// <example>
/// 下面的代码演示如何调用 <see cref="GetString"/>
/// <code>
/// string str = GetString(resxName, name, culture);
/// </code>
/// </example>
public static string GetString(string resxName, string name, CultureInfo culture)
{
EnsureResources(resxName);
ResourceManager res = _resources[resxName] as ResourceManager;
if(res!=null)
return res.GetString(name, culture);
return string.Empty;
}
/**//// <summary>
/// 通知 ResourceManager 对所有 ResourceSet 对象调用 Close,并释放所有资源
/// </summary>
/// <remarks> 此方法将缩小正在运行的应用程序中的工作集。以后在此 <see cref="ResourceManager"/> 上的任何资源查找都和第一次查找一样花费时间,因为它需要再次搜索和加载资源。<br/>
/// 这在某些复杂线程处理方案中可能有用;在这种情况下创建新的 ResourceManager 不失为明智之举。<br/>
/// 此方法还可用于以下情况:由当前的 ResourceManager 打开的 .resources 文件必须被明确释放,而无需等到 ResourceManager 完全超出范围并对它进行垃圾回收。
///</remarks>
///<permission cref="System.Security.PermissionSet">public</permission>
public static void ReleaseAllResources()
{
if(_resources!=null)
{
//找到所有存在的 Resources 调用Close,并释放所有资源
for(int i=0;i< _resources.Count;i++)
{
ResourceManager rm = (ResourceManager)_resources[i];
rm.ReleaseAllResources();
}
}
}
#endregion
}
#endregion
- 共享一下“资源文件做多语言版本”的类
- 看了GAL游戏资源文件黑盒分析,想起以前做的一个提取器,发来大家共享一下
- 多语言资源文件的过滤工具
- C# 多语言资源文件的访问
- 资源文件(多语言)的管理
- 多语言资源文件命名
- 统计一下各种语言版本的“Hello World!”
- C#增加语言资源文件的文件
- 写了一个Java读取XML文件的工具类,做一下笔记!
- 写了一个Java读取XML文件的工具类,做一下笔记!
- 写了一个Java读取XML文件的工具类,做一下笔记!
- 写了一个Java读取XML文件的工具类,做一下笔记!
- 最近把EJB3.0的所有规范都看了,也做了一下。所以把它共享一下。
- 利用.net2.0的资源文件实现多语言开发!
- net2.0的资源文件实现多语言开发! 2222
- 利用.net2.0的资源文件实现多语言开发!
- 纯资源的dll文件来实现多语言
- 多语言的资源包文件比较检查,自动核对。
- 利用Jakarta Commons Digester匹配xml配置文件信息与其对应的xml规则文件形成Java Object
- 设计模式的有趣解释-追MM
- 利用Java调用可执行命令实例
- Oracle诊断案例-Job任务停止执行
- HtmlEditor 下个版本正式更名为 WebHtmlEditor 1.0 ,目前正在开发中...
- 共享一下“资源文件做多语言版本”的类
- 开源:.NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现
- 虚拟主机如何提高整体性能-application的使用
- 基于 TCP 的 ISO 传输服务(ITOT)--网络大典
- 博客——互联网时代的文艺复兴
- 将应用程序11M内存占用,降至500K!
- 可靠数据协议(RDP)--网络大典
- Java 理论与实践: JDK 5.0 中更灵活、更具可伸缩性的锁定机制
- Tomcat 5 + Apache 2 + mod_jk 2 实现虚拟主机(转)