C# C语言中的多语言支持#
我用c#windows应用程序开发了一个示例软件。如何使其成为多语言支持软件 例如:其中一个消息框显示“欢迎使用示例应用程序” 我在一个中文操作系统中安装了这个软件,但它只显示英文信息 我正在使用“字符串表”(资源文件)解决这个问题 在字符串表中,我需要用英文和中文为每条消息创建条目C# C语言中的多语言支持#,c#,winforms,localization,multilingual,C#,Winforms,Localization,Multilingual,我用c#windows应用程序开发了一个示例软件。如何使其成为多语言支持软件 例如:其中一个消息框显示“欢迎使用示例应用程序” 我在一个中文操作系统中安装了这个软件,但它只显示英文信息 我正在使用“字符串表”(资源文件)解决这个问题 在字符串表中,我需要用英文和中文为每条消息创建条目 这是一个及时的过程。还有其他方法吗?您可以使用资源文件来完成。您需要为每种语言创建资源文件,并且可以在运行应用程序时使用相应的资源文件。为您要支持的每种语言创建资源文件 根据用户的语言/当前文化,从相应的语言资源
这是一个及时的过程。还有其他方法吗?您可以使用资源文件来完成。您需要为每种语言创建资源文件,并且可以在运行应用程序时使用相应的资源文件。为您要支持的每种语言创建资源文件 根据用户的语言/当前文化,从相应的语言资源文件中读取值并显示在标签或MessageBox中。下面是一些示例代码:
public static class Translate
{
public static string GetLanguage()
{
return HttpContext.Current.Request.UserLanguages[0];
}
public static string Message(string key)
{
ResourceManager resMan = null;
if (HttpContext.Current.Cache["resMan" + Global.GetLanguage()] == null)
{
resMan = Language.GetResourceManager(Global.GetLanguage());
if (resMan != null) HttpContext.Current.Cache["resMan" + Global.GetLanguage()] = resMan;
}
else
resMan = (ResourceManager)HttpContext.Current.Cache["resMan" + Global.GetLanguage()];
if (resMan == null) return key;
string originalKey = key;
key = Regex.Replace(key, "[ ./]", "_");
try
{
string value = resMan.GetString(key);
if (value != null) return value;
return originalKey;
}
catch (MissingManifestResourceException)
{
try
{
return HttpContext.GetGlobalResourceObject("en_au", key).ToString();
}
catch (MissingManifestResourceException mmre)
{
throw new System.IO.FileNotFoundException("Could not locate the en_au.resx resource file. This is the default language pack, and needs to exist within the Resources project.", mmre);
}
catch (NullReferenceException)
{
return originalKey;
}
}
catch (NullReferenceException)
{
return originalKey;
}
}
}
在asn asp.net应用程序中,您可以按如下方式使用它:
<span class="label">User:</span>
用户:
你现在可以说:
<span class="label"><%=Translate.Message("User") %>:</span>
:
如果您打算按照Ram的建议使用资源文件,那么有一篇关于本地化的好博文
. (我应该提到,这是针对Asp.net mvc 2的,它可能有用,也可能不有用)您仍然需要花时间为每种语言制作表格。我以前没有使用过任何其他方法,希望您能找到一些有用的方法可以大大缩短您花在本地化上的时间。它的特性允许轻松移动到资源,并且它在所有可本地化的字符串上加下划线(如果选择了下划线),因此很难忽略它们
考虑到它有30天的试用期(完整版),你可以简单地安装它,做你的工作,如果你负担不起的话卸载它,但我建议保留它:-)它真的是物有所值的价格
软件本地化和全球化对于开发人员来说一直是困难的,有时是不必要的任务。ReSharper 5通过在C#和VB.NET代码以及ASP.NET和XAML标记中为resx文件和资源使用提供一整套功能,极大地简化了资源的使用。专用功能包括将字符串移动到资源、查找资源的用法和其他导航操作。结合重构支持、检查和修复,您可以获得一个方便的本地化环境 好的线程在这里:请参阅这里: