C# C语言中的多语言支持#

C# C语言中的多语言支持#,c#,winforms,localization,multilingual,C#,Winforms,Localization,Multilingual,我用c#windows应用程序开发了一个示例软件。如何使其成为多语言支持软件 例如:其中一个消息框显示“欢迎使用示例应用程序” 我在一个中文操作系统中安装了这个软件,但它只显示英文信息 我正在使用“字符串表”(资源文件)解决这个问题 在字符串表中,我需要用英文和中文为每条消息创建条目 这是一个及时的过程。还有其他方法吗?您可以使用资源文件来完成。您需要为每种语言创建资源文件,并且可以在运行应用程序时使用相应的资源文件。为您要支持的每种语言创建资源文件 根据用户的语言/当前文化,从相应的语言资源

我用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文件和资源使用提供一整套功能,极大地简化了资源的使用。
专用功能包括将字符串移动到资源、查找资源的用法和其他导航操作。结合重构支持、检查和修复,您可以获得一个方便的本地化环境

好的线程在这里:请参阅这里: