今天尝试将SkyD Regex升级为多语言,文本量很少,感觉没多少工作量,结果折腾一晚上才算搞定,又是他妈微软的各种坑,真尼玛恶心死我了。

先说Multilingual App Toolkit 4.0,其用法是:安装后,先设置项目为启用状态,创建一个主语言(Package.appxmanifest中指定),然后再创建好其它语言目录和资源文件,然后通过Multilingual App Toolkit的工具对主语言翻译,保存并重新编译程序,然后它就会自动填充你的目标语言的资源文件了。

然而我用时根本不管事,我按下图方式创建了资源:

image

以简体中文为主语言,用Multilingual App Toolkit的工具翻译好其他两个语言,保存,重新编译,再看别的语言资源文件根本没变化,我删了它们的资源文件也没用,看输出信息提示找不到一串文件,我把提示的路径复制到资源管理器地址栏里,尝试都能正常打开,可以肯定不是缺文件造成的,所有路径也都是英文,不会有字符问题。

于是我就卸载了这微软的傻逼官方Toolkit,手动翻译好了另两种语言,然后在App.xaml.cs里分别手动指定语言为英文和繁体中文进行测试:

        /// <summary>
        /// 初始化单一实例应用程序对象。这是执行的创作代码的第一行,
        /// 已执行,逻辑上等同于 main() 或 WinMain()。
        /// </summary>
        public App()
        {
            Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = "en";    //强制切换语言,以用于测试翻译
            Microsoft.ApplicationInsights.WindowsAppInitializer.InitializeAsync(
                Microsoft.ApplicationInsights.WindowsCollectors.Metadata |
                Microsoft.ApplicationInsights.WindowsCollectors.Session);
            this.InitializeComponent();
            this.Suspending += OnSuspending;
        }

测试都没问题,然后设置默认主语言为英语,删掉强制指定语言的代码,运行,结果怎么运行都是显示英语界面,我这可是简体中文系统啊!系统设置中国地区简体中文语言没跑的!然后我尝试把系统语言默认设为繁体中文,一样无效,真是操蛋,按各路教程来说系统应该会自动根据语言切换了的。

然后我搜到有说需要改Package.appxmanifest中的语言资源列表的,图形界面里根本找不到编辑语言列表的位置,用XML编辑器打开之,注释掉原来的不知是干什么的那货,手动加入了指定语言的代码:

  <Resources>
    <!--<Resource Language="x-generate" />-->
    <Resource Language="en" />
    <Resource Language="zh-Hans" />
    <Resource Language="zh-Hant" />
  </Resources>

然而依然无效。

骂了几分钟微软之后,我尝试在App()函数里读取Windows.Globalization.ApplicationLanguages.Languages的值,发现其中包含”en”和”zh-Hans-CN”两个语言,如果我在系统设置里添加繁体中文台湾,那么还会多出来一个”zh-Hant-TW”,但无论怎么设置,”en”始终存在,而且总在第一个。

看来是傻逼微软的语言匹配没弄好,那么无奈我们手动配置来让支持中文的系统默认显示中文吧:

        /// <summary>
        /// 初始化单一实例应用程序对象。这是执行的创作代码的第一行,
        /// 已执行,逻辑上等同于 main() 或 WinMain()。
        /// </summary>
        public App()
        {
            if (Windows.Globalization.ApplicationLanguages.Languages.Any(q => q.ToLower().IndexOf("hans") >= 0))
            {
                Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = "zh-Hans";
            }
            else if (Windows.Globalization.ApplicationLanguages.Languages.Any(q => q.ToLower().IndexOf("hant") >= 0))
            {
                Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = "zh-Hant";
            }
            Microsoft.ApplicationInsights.WindowsAppInitializer.InitializeAsync(
                Microsoft.ApplicationInsights.WindowsCollectors.Metadata |
                Microsoft.ApplicationInsights.WindowsCollectors.Session);
            this.InitializeComponent();
            this.Suspending += OnSuspending;
        }

编译运行,总算是显示中文了,唉,操她娘的微软印度狗,我就在这发誓:纳德拉滚下台之前,我他妈决逼不会再买微软任何东西。

另外昨天发博文提供了“Visual Studio 2015 编译打包UWP程序总是失败的解决办法”,今天我再打包发现又不会报错失败了,这他妈是软件么?报不报错是看心情的吗?

对了,这几天还遇到Package.appxmanifest设置页面的傻逼BUG:

image

Package.appxmanifest里改完那个比例100的图之后就一直这操性了,再怎么改也没用,然而编译、打包、测试、提交、审查、发布,一系列搞下来都没有问题,真他妈二逼。

另外这里如果设置了徽章徽标那里的图,就会出错,怎么改都不行,只能把那部分代码删了才行,也不知这帮印度傻逼是怎么想的。

分享或转载本博客站点内的所有原创内容时,都必须遵循此协议:

姓名标示-非商业性-相同方式分享 4.0 国际 (CC BY-NC-SA 4.0)

同时必须附加指向本文页面本博客首页的超链接。

除此之外的转载、分享方式都必须征得本博客作者的授权,否则将会诉诸法律。