.NET控件本地化-如何转换自定义字符串

.NET控件本地化-如何转换自定义字符串,.net,localization,internationalization,.net,Localization,Internationalization,我正在使用Windows窗体创建一个多语言应用程序。我已经创建了我的多语言内容,将表单标记为可本地化,然后将语言切换为其他默认语言,并更改表单文本 这很有效,但有一个小问题。在其中一个表单上,我必须设置要在表单构造函数中显示的文本。现在的问题是,如果我用默认语言输入它,即使文化切换到其他语言,它也会出现在该语言中 我想知道什么是最简单或最有效的方法来本地化这样的字符串 以下是我需要本地化的消息类型的示例: class MyForm : Form { public MyForm()

我正在使用Windows窗体创建一个多语言应用程序。我已经创建了我的多语言内容,将表单标记为可本地化,然后将语言切换为其他默认语言,并更改表单文本

这很有效,但有一个小问题。在其中一个表单上,我必须设置要在表单构造函数中显示的文本。现在的问题是,如果我用默认语言输入它,即使文化切换到其他语言,它也会出现在该语言中

我想知道什么是最简单或最有效的方法来本地化这样的字符串

以下是我需要本地化的消息类型的示例:

class MyForm : Form
{
    public MyForm()
    {
        if (myAdapter.ConnectionStatus == ConnectionStatus.OK)
        {
            statusLabel.Text = "Connected";
        }
        else 
        {
            statusLabel.Text = "Not connected";
        }
    }
}

在本例中,我希望根据当前区域性信息对“已连接”和“未连接”进行本地化。

当您将表单标记为可本地化时,您将为每种语言创建不同的资源文件。您应该在资源文件中添加“已连接”和“未连接”的字符串键,并手动从资源文件中提取,而不是硬编码字符串

ResourceManager resmgr = new ResourceManager("MyResource", Assembly.GetExecutingAssembly());

private CultureInfo englishCulture = new CultureInfo("en-US");
private CultureInfo frenchCulture = new CultureInfo("fr-FR");
private CultureInfo spanishCulture = new CultureInfo("es-ES");
然后,要获取字符串,请使用键和区域性调用GetString()

string msg = resmgr.GetString("FormLabel.Connected",frenchCulture);
string msg = resmgr.GetString("FormLabel.NotConnected", frenchCulture);

您可能已经在管理您的区域性,因此您可以利用它,然后您只需指定使用哪个键从资源文件中获取正确的值。

当您将表单标记为可本地化时,您正在为每种语言创建不同的资源文件。您应该在资源文件中添加“已连接”和“未连接”的字符串键,并手动从资源文件中提取,而不是硬编码字符串

ResourceManager resmgr = new ResourceManager("MyResource", Assembly.GetExecutingAssembly());

private CultureInfo englishCulture = new CultureInfo("en-US");
private CultureInfo frenchCulture = new CultureInfo("fr-FR");
private CultureInfo spanishCulture = new CultureInfo("es-ES");
然后,要获取字符串,请使用键和区域性调用GetString()

string msg = resmgr.GetString("FormLabel.Connected",frenchCulture);
string msg = resmgr.GetString("FormLabel.NotConnected", frenchCulture);

您可能已经在管理您的区域性,因此您可以利用它,然后您只需指定要使用的键即可从资源文件中获取正确的值。

我想您的意思是向Form1.resx或Form1.nl-nl.rex文件添加字符串?这不是个好主意!之后编辑表单时(f.i.调整文本框大小),添加的字符串资源将被删除!我想您的意思是在Form1.resx或Form1.nl-nl.rex文件中添加一个字符串?这不是个好主意!之后编辑表单时(f.i.调整文本框大小),添加的字符串资源将被删除!