“发布语言”选项到底是什么?

Voj*_*nal 3 c# clickonce localization winforms visual-studio-2012

我有一个ClickOnce项目-winform app-按国家有两个安装位置,一个安装在捷克共和国,一个安装在斯洛伐克。每当我为其他国家/地区发布时,我只会更改“安装”文件夹和“发布”文件夹。

最近,我已将应用本地化为斯洛伐克语。但是在发布包中,两个包/发布位置的“发布语言”都设置为捷克语。

在此处输入图片说明

根据文档,它仅会影响ClickOnce安装程序的语言。但实际上,它会影响整个应用的文化。我什至添加了以下几行:

    [STAThread]
    static void Main()
    {
        //localization code

        Thread.CurrentThread.CurrentUICulture = new CultureInfo("sk-SK");
        Thread.CurrentThread.CurrentCulture = new CultureInfo("sk-SK");
Run Code Online (Sandbox Code Playgroud)

但是安装后,即使在启动时运行此代码,该应用程序仍会以捷克语显示在捷克语Windows上。当我将语言更改为斯洛伐克语或中性时,它会在客户端上显示以下ClickOnce错误(因为我更改了发布语言):

部署身份与预订不匹配。

用斯洛伐克语“发布语言”重新安装时,它会在斯洛伐克语中正确显示。

为什么即使我在代码中手动将区域性设置为,sk-SK并且客户端具有斯洛伐克语Windows并且仅将“发布语言”设置为捷克语,为什么也看不到斯洛伐克语界面?有没有解决方法,使我不必重新安装所有客户端?

Ada*_*unn 5

抱歉,我的回复很晚,但是我自己才遇到这个问题。即使将CurrentUICulture设置为Slovak,仍然会看到捷克语的原因是因为ClickOnce中的“发布语言”设置决定了将哪种语言程序集交付给客户端。由于ClickOnce设置为捷克语,因此它将仅发布捷克语.dll文件以传递给客户端。允许多种语言(其中语言由客户端Windows安装或通过CurrentThread.CurrentUICulture确定)的唯一方法是将ClickOnce发布语言设置为“(默认)”或“中性”。有关更多信息,请参见MSDN文档

不幸的是,似乎无法在首次发布后尝试更改发布语言,因为这样会导致

部署身份与预订不匹配。

如您所发现。这是我目前正在尝试解决的问题,而无需指导客户端进行卸载/重新安装程序。