c# - "Publish language"选项到底是什么?

标签 c# winforms visual-studio-2012 localization clickonce

我有一个 ClickOnce 项目 - winform 应用程序 - 按国家/地区有两个安装位置,一个用于捷克共和国,一个用于斯洛伐克。 每当我为不同的国家发布时,我只更改安装文件夹和发布文件夹。

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

enter image description here

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

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

        Thread.CurrentThread.CurrentUICulture = new CultureInfo("sk-SK");
        Thread.CurrentThread.CurrentCulture = new CultureInfo("sk-SK");

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

The deployment identity does not match the subscription.

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

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

最佳答案

抱歉,我回复晚了,只是我自己遇到了这个问题。即使将 CurrentUICulture 设置为斯洛伐克语,您仍然会看到捷克语的原因是 ClickOnce 中的“发布语言”设置决定了将哪些语言程序集发送到客户端。因为 ClickOnce 设置为 Czech,所以它只会发布 Czech .dll 文件以交付给客户端。允许多种语言(语言由客户端 Windows 安装或通过 CurrentThread.CurrentUICulture 确定)的唯一方法是将 ClickOnce 发布语言设置为“(默认)”或“中性”。参见 MSDN docs获取更多信息。

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

The deployment identity does not match the subscription.

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

关于c# - "Publish language"选项到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28805356/

相关文章:

c# - if 语句中的常量条件

c# - 泛型方法内部的泛型方法

.net - ToolStripButton 文本在 ContextMenuStrip 中被截断

C# - 图像作为可点击的按钮

c# - 如何获取DevExpress XtraGrid选中的行值?

c# - asp : no file is created when logging a message 中的 Log4Net

c# - 就内存而言,清除数组的更好方法是什么

visual-studio-2012 - 如何将 Visual Studio 2012 RC 的帮助查看器固定到任务栏?

asp.net - 使用 ASP.NET 将二进制写入新选项卡/窗口

visual-studio-2012 - 正则表达式来替换字符串的多个部分(在Visual Studio 2012中)