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

RaY*_*ell 1 .net localization internationalization

我正在使用Windows Forms创建一个多语言应用程序.我已经通过将表单标记为可本地化并将语言切换为默认的其他内容并更改表单文本来创建我的多语言内容.

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

我想知道什么是最简单或最有效的本地化字符串方式.

只是我需要本地化的消息的一个示例:

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

在此示例中,我希望根据当前的文化信息对"已连接"和"未连接"进行本地化.

Ner*_*ury 7

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

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");
Run Code Online (Sandbox Code Playgroud)

然后获取一个字符串,使用键和文化调用GetString()

string msg = resmgr.GetString("FormLabel.Connected",frenchCulture);
string msg = resmgr.GetString("FormLabel.NotConnected", frenchCulture);
Run Code Online (Sandbox Code Playgroud)

您可能已经在管理您的文化,因此您可以利用它,然后您只需指定用于从资源文件中获取正确值的密钥.